【发布时间】:2010-03-05 19:38:25
【问题描述】:
我有一个担心精度损失的问题
我的任务是将数字打印为字符串
int exponent = ...
int[] Mantissas = { 1, 2, 5 };
double dataStep = java.lang.Math.pow(10.0, exponent) * Mantissas[mantissaIndex];
...
for (int i = 0; i < NSteps; i++)
steps[i] = firstStep + i * dataStep;
draw(steps);
例如,0.2*7=1.4000000000000001; 0.0000014/10=1.3999999999999998E-7
如何解决这个问题?
UPD:主要问题是字符串输出格式。我不担心失去大约 0.00000001 的价值。 现在我将它解决为 String.format("%f", value), 但我认为这不是好方法
【问题讨论】:
-
stackoverflow 上最常见的问题。
-
我们应该有一个 fubar 徽章来问这个问题。