Types Android:double类型的计算错误

Types Android:double类型的计算错误,types,double,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.9999987。如何使计算结果更准确,即0.01?提前感谢您的帮助。使用Math.round(num)而不是int-casting。您可以用它来计算。问题是双打是基于

请帮忙。当使用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.9999987。如何使计算结果更准确,即0.01?提前感谢您的帮助。

使用
Math.round(num)
而不是int-casting。

您可以用它来计算。

问题是双打是基于二进制的,精度有限。它们不能准确地表示
2.01
1.01
(或实数)。这并不意味着它们是无用的,我们通常不关心像这样的细微差别。如果你这样做,你将不得不使用其他东西(如定点或大十进制)

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


检查其他问题和特定答案:这不会解决根本问题。此外,如果
a
i
2.51
,这将产生一个负数,而不是一个正数,这似乎不是OP想要的。