Android:类型为double的错误计算

时间:2013-04-20 14:05:44

标签: types double

请帮助。使用like double时我的计算错误。例如,我们使用以下代码:

double a = 2.01;
double b = 1.01;
double c = 100*(a - (int)a);
double d = 100*(b-(int)b);

在我的日志中,我看到以下内容:c = 1.0000001和d = 0.99999987。如何使计算得到更准确的结果,即0.01?在此先感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

使用Math.round(num)代替int cast。

答案 1 :(得分:0)

您可以使用BigDecimal进行数学运算。

答案 2 :(得分:0)

问题是双打是基于二进制的并且精度有限。它们无法准确表示2.011.01(或almost all实数)。这并不意味着它们没用,通常我们不关心这样的小差异。如果你这样做,你将不得不使用其他东西(如固定点或BigDecimal)

答案 3 :(得分:0)

嗯,计算机不会像我们一样思考或存储数字。在计算机中存储和访问浮点数有几种方法 - 称为数值分析;基本上是如何近似浮点数。

https://en.wikipedia.org/wiki/Numerical_analysis