[英]How to get the value without round up/down in Java? [duplicate]
double d0 = Double.parseDouble("53.82233040000000557");
double d1 = Double.valueOf("53.82233040000000557");
输出
d0 = 53.822330400000006
d1 = 53.822330400000006
类java.math.BigDecimal
更适合处理精度很重要的数字(如货币金额),请参阅BigDecimal VS double 。
它可以用于地理坐标(纬度/经度) 。 尽管从业者认为double
对于纬度/经度来说足够精确。 - 因为你不想定位纳米级的东西。
如果您的数字需要高精度和小数位数,请像这样使用BigDecimal
:
BigDecimal decimalValue = new BigDecimal("53.82233040000000557");
System.out.println("as BigDecimal: " + decimalValue.toPlainString());
// prints exactly: 53.82233040000000557
在线运行此代码(IDE 一个): Double VS BigDecimal for high precision
如果您需要精度,则必须使用BigDecimal
。
答案是你不能。 您获得的值是可能存储在double
中的值的最准确近似值。 没有可能的方法来获得存储在double
中的更准确、更少舍入的值。
因此,如果您要求答案根本不四舍五入,则不应使用double
。 您应该改用的数据类型是BigDecimal
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.