使用DecimalFormat保留一位小数,看了DecimalFormat的介绍:1.25 保留一位小数就是 1.2 ; 1.35 保留一位小数就是 1.4 因为满足银行家算法:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一,(即最后一位小数是 5 的时候,当前一位是奇数的时候就进一位凑成偶数,当前一位是偶数的时候就舍去),怎么4.45和4.55效果就和前面的不一样呢?是中间有什么问题吗?还是使用不当?
double num2 = 1.25;
System.out.println(new DecimalFormat("#.#").format(num2));//1.2
double num3 = 1.35;
System.out.println(new DecimalFormat("#.#").format(num3));//1.4
double num4 = 4.45;
System.out.println(new DecimalFormat("#.#").format(num4));//为啥是4.5?不应该和前面的一样是4.4?
double num5 = 4.55;
System.out.println(new DecimalFormat("#.#").format(num5));//为啥是4.5?不应该和前面的一样是4.6?
输出结果:
1.2
1.4
4.5
4.5
因为num4是浮点型,对呀BigDecimal数据,建议用字符串
public static void main(String[] args) {
String num2 = "1.25";
System.out.println(new DecimalFormat("#.#").format(new BigDecimal(num2)));//1.2
String num3 = "1.35";
System.out.println(new DecimalFormat("#.#").format(new BigDecimal(num3)));//1.4
String num4 = "4.45";
System.out.println(new DecimalFormat("#.#").format(new BigDecimal(num4)));//为啥是4.5?不应该和前面的一样是4.4?
String num5 = "4.55";
System.out.println(new DecimalFormat("#.#").format(new BigDecimal(num5)));//为啥是4.5?不应该和前面的一样是4.6?
}
可参考:http://t.zoukankan.com/mojiejushi-p-12694984.html