java双操作精度问题
我在javascript中遇到了类似的问题,我通过乘以1000并预言解决了这个问题。如何用Java解决这个问题
代码段:
double a=Double.parseDouble("1.8")/100;
System.out.println(a);
输出:
0.018000000000000002
我想要0.018作为输出。建议
你可以在下面搜索框中键入要查询的问题!
我在javascript中遇到了类似的问题,我通过乘以1000并预言解决了这个问题。如何用Java解决这个问题
代码段:
double a=Double.parseDouble("1.8")/100;
System.out.println(a);
输出:
0.018000000000000002
我想要0.018作为输出。建议
# 1 楼答案
当您需要很高的精度时,最好坚持使用BigDecimal而不是Double
BigDecimal可以保存任意精度和大小的数字,而Double由于其表示形式而精度有限
缺点是BigDecimal的性能较差,代码编写更冗长(BigDecimal不能使用“+”、“-”等运算符)
# 2 楼答案
你可以做:
或
# 3 楼答案
你想增加预见性,还是做漂亮的印刷? 如果要打印0.018,可以使用
%.3f表示打印“.”后有3位数字的浮点数
%n表示新行
您可以查看this german site如何使用printf。只需向下滚动查看清单4.30(理解示例不需要懂德语)