双浮点减法

时间:2013-11-18 06:33:20

标签: c# .net floating-point double

所以,这里有一个重复的问题:

在我客户的一台机器上,我有这段代码,

        public double getFreeSpace()
        {
            return this.totalSize - this.listElements.Sum();
        }

当这样的减法发生时:(1.0 - 0.8)预期结果为(0.2),但她得到的结果为0.199999

虽然这不是预期的结果,但如何将0.2作为此代码的输出?

stackoverflow问题here讨论了同样的问题,但建议使用decimal作为替代方案。 (但是,请注意,在同一个答案中,我们会收到警告:It is a 128 bit datatype as opposed to 64 bit which is the size of a double)。

我也尝试过,Math.Round(1.0-0.8, 0, MidpointRounding.AwayFromZero)但是这不起作用。

现在的问题是,如何在保持相同0.2 datatype as double 的同时获得without using a decimal所需的答案?

1 个答案:

答案 0 :(得分:1)

如果问题是

  

如何在保持不变的情况下将所需答案设为0.2   数据类型为double而不使用小数

然后答案是:你不能

我认为你应该看看here以获取更多信息。

对准确性的需求是创建decimal类型的原因。这些类型使用起来较慢,但更准确。