java - JAVA:两个浮点数的差异
问题描述
double double1 = 0.174;
double double2 = 0.175;
double diff = Math.abs(double1 - double2);
diff
返回0.0010000000000000009
现在我输入:
double double1 = 3.174;
double double2 = 3.175;
double diff = Math.abs(double1 - double2);
我期望diff
返回相同的结果,但它返回9.999999999998899E-4
. 这种行为有原因吗?
解决方案
可以使用 BigDecimal
BigDecimal decimal1=BigDecimal.valueOf(1.744);
BigDecimal decimal2=BigDecimal.valueOf(1.745);
BigDecimal result=decimal2.subtract(decimal1);
double diff=Math.abs(result.doubleValue());
推荐阅读
- java - 使用 Kotlin/Java 代码驱动 android.opengl.GLSurfaceView
- batch-file - 如何使用日期参数列出 .7z 文件中的文件详细信息?
- python - 明确定义方法时出现 NameError
- shopify - 使用字符串创建 Liquid 变量
- c# - Unity C# 向围绕移动轴旋转的目标发射弹丸
- java - 创建用户时的 Android Firebase 错误
- angular - 角度模板 *ngIf 与数组比较
- reporting-services - SSRS 报告从 rdl 运行时未返回所有记录
- reactjs - Reactstrap 模态窗口未显示
- python - Django 在远程服务器中找不到文件