java – 与println和printf不同的舍入
下面的第一行将打印0.8999999999999999因为精度损失,这是很清楚的.但是第二行会打印0.9,我只是不明白为什么.这个计算不应该有同样的问题吗?
System.out.println(2.00-1.10); System.out.printf("%f",2.00-1.10); 解决方法
我想你缺少使用System.out.printf()的东西,如果你没有明确的格式化宽度,那么C中的printf的默认行为(如果没有明确指定,则是6位小数位)
所以如果你不指定任何数字到%f,默认情况下它只打印1个字符.但是,如果要更改小数后的数字,则需要将其指定为%.2f,这将打印数字为2位小数. 所以它类似于写作 System.out.printf("%f",2.00-1.10); 要么 System.out.printf("%.1f",2.00-1.10); 由于float的格式说明符的一般语法是: %[flags][width][.precision][argsize]typechar 在旁注: Java中也有一个formatter class.
从Oracle Docs
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |