所以,这里有一个重复的问题:
在我客户的一台机器上,我有这段代码,
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
所需的答案?
答案 0 :(得分:1)
如果问题是
如何在保持不变的情况下将所需答案设为0.2 数据类型为double而不使用小数
然后答案是:你不能。
我认为你应该看看here以获取更多信息。
对准确性的需求是创建decimal
类型的原因。这些类型使用起来较慢,但更准确。