java - 在 java 中评估十进制值时遇到问题

标签 java

<分区>

double  x = 0.00090; 
double b = 0.00100;
double c = x - b;

产生

-1.0000000000000005E-4

代替

-0.0001

double  x = -0.09;       
double b = 0.001;
double c = x * b;

产生

-8.999999999999999E-5

代替

-0.00009

我也试过

Math.round(c) and Math.round(c*100.0)/100.0

但它产生相同的结果或小数点后数字范围不完整的结果。

最佳答案

这就是规范中定义数字运算的方式。

小数在内部表示为最接近的近似值,在某些情况下这不是精确的字面值。

如果你需要精确的数值计算,你必须使用BigDecimal

关于java - 在 java 中评估十进制值时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30350288/

相关文章:

java - 将 JSP 标记转换为 JSF 组件

java - CyclicBarrier:导致屏障跳闸的 'x' 个线程中的 'y' 完成执行并终止

java - 具有用户名和 ID 的 Spring Security RememberMe 函数

java - 如何检索相似对象列表中对象内部的相似值并根据这些值创建映射

java - java中的日历在更改时区时返回相同的日期?

java - List<String[]> 仅返回表中的最后一行

java - Apache Camel 路由配置中返回 Future 的 Bean 方法

java - 我想要在 oncreate() Activity 之外从另一个类中提取 exoplayer 中的 YouTube 链接

javascript - 在 Spring Controller 中,我得到的日期早于我发送的实际日期

java - 即使您在内部使用类级别变量,使用@Autowired anno并且从不在bean上调用set方法是否可以提供线程安全性?