可能是一个简单的问题,但这个计算困扰我..为什么double test = 57.05 - 57
等于0.049999999999997158而不是0.05?我应该使用哪种数据类型来获得正确的结果?
答案 0 :(得分:10)
使用decimal
。并阅读this。
答案 1 :(得分:4)
尝试将.05十进制转换为二进制并告诉我你得到了什么结果(提示:它是一个重复值)。
答案 2 :(得分:2)
答案很长:Floating Point Representation
简答:类似双重符合IEEE 754的类型,它规定了可能在任何地方(浮动)有小数点的数据类型。由于计算机的原生二进制表示,在许多情况下对这些表示的数学运算结果可能只是实际结果的近似值。
答案 3 :(得分:1)
浮点计算不正确。
怎么样?