繁体   English   中英

如何在 Java 中不向上取整或向下取整获取值? [复制]

[英]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 中的精度数字

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

阅读更多

Java 教程中阅读更多内容:BigDecimal 和 BigInteger

如果您需要精度,则必须使用BigDecimal

答案是你不能。 您获得的值是可能存储在double中的值的最准确近似值。 没有可能的方法来获得存储在double中的更准确、更少舍入的值。

因此,如果您要求答案根本不四舍五入,则不应使用double 您应该改用的数据类型是BigDecimal

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM