我想求一个数的差值。
我试着用这个。我使用了 Abs
函数。它适用于整数。
但是当我尝试执行以下操作时,
var gh = Math.Abs(3.223 - 6.243);
它返回 3.0200000000000005
。但我期待 3.02
。
为什么?如何获取3.02
?
最佳答案
因为您使用的是 float/double 值,它们本质上不是 100% 精确的(这是由于它们的二进制表示)。例如,对于 float ,您甚至无法获得精确的 0.1
,因为它的二进制表示形式是周期性的 1.(1001)
。这是一篇关于此事的非常完整的文章: What Every Computer Scientist Should Know About Floating-Point Arithmetic
Tl;dr 解决方案是使用decimal
进行精确的十进制算术运算
var gh = Math.Abs(3.223m - 6.243m);
关于c# - 使用 C# Math.Abs 返回值 - 未获得预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13929480/