long类型数字 控制小数点四舍五入 当最后一位数为5时 奇数进位偶数不进位
时间: 2024-02-25 22:55:45 浏览: 66
你可以使用Java中的BigDecimal类来实现这样的四舍五入。具体的做法是:先将long类型的数字转换为BigDecimal类型,然后调用setScale方法设置保留小数点后的位数,并使用setRoundingMode方法设置舍入模式为HALF_UP,这样就可以实现四舍五入了。
对于最后一位数为5的情况,可以使用一个判断语句来实现奇数进位偶数不进位的功能。具体的做法是:先将BigDecimal类型的数字转换为字符串类型,然后取出最后一位数,判断它是否为5,如果是,则判断它前面的数字是否为奇数,如果是,则调用add方法将其加1,否则不做处理。最后再将结果转换为long类型即可。以下是示例代码:
```java
long num = 123456789;
int scale = 2;
BigDecimal bd = new BigDecimal(num);
bd = bd.setScale(scale, RoundingMode.HALF_UP);
String str = bd.toString();
char lastChar = str.charAt(str.length() - 1);
if (lastChar == '5') {
char prevChar = str.charAt(str.length() - 2);
if ((prevChar - '0') % 2 == 1) {
bd = bd.add(BigDecimal.ONE);
}
}
long roundedNum = bd.longValue();
```
注意:以上代码仅供参考,实际使用时需要根据具体需求进行修改。
阅读全文