双重添加不会返回预期值,为什么?

时间:2017-11-23 13:09:48

标签: c#

我希望resultresult2相同:

运行以下C#代码时,

乘以.1 x 10应该等于.1 + .1 + .1 + .1 + .1 + .1 + .1 + .1 + .1 + .1

public void DoubleAddition()
    {
        Double x = .1;
        Double result = 10 * x;
        Double result2 = x + x + x + x + x + x + x + x + x + x;

        Console.WriteLine("{0} - {1}", result, result2);
        Console.WriteLine("{0:R} - {1:R}", result, result2);
    }

Console.WriteLine("{0} - {1}", result, result2);的输出为 1 - 1 并且何时使用往返式成形器,例如Console.WriteLine("{0:R} - {1:R}", result, result2);然后结果为 1 - 0.999999999999999989

当我们使用往返格式化程序显示时,为什么result2不完全是1? 当我们声明Double d = 0.1时,存储在内存中的值是多少?

0 个答案:

没有答案