我遇到了一个问题,我正在开发一个应用程序,它应该能够进行一些数学计算。这些计算必须准确(或者不是明显错误)
但是这个简单的代码
double a = 3.048d;
double b = 1000d;
double c = a / b;
Run Code Online (Sandbox Code Playgroud)
给我一个错误的结果 c 不是预期的 0.003048,而是 0.00304800000000000004,这显然是错误的。
double d = 3.048 / 1000;
Run Code Online (Sandbox Code Playgroud)
第二个代码片段给出了正确的结果。
我知道用计算机计算时所有浮点算法都不准确,但我不知道如何解决这个问题。
提前致谢!
路德维希
开发:
- Android 2.2
测试设备:
- HTC Desire
您需要使用BigDecimal对象来实现精确的精确度:
BigDecimal a = new BigDecimal("3.048");
BigDecimal b = new BigDecimal(1000);
BigDecimal c = a.divide(b);
System.out.println(c); //0.003048
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |