Android - 精确的数学计算

DrL*_*ig3 0 java android

我遇到了一个问题,我正在开发一个应用程序,它应该能够进行一些数学计算。这些计算必须准确(或者不是明显错误)

但是这个简单的代码

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

Joh*_*sen 5

您需要使用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)