c# - 使用 C# Math.Abs​​ 返回值 - 未获得预期输出

标签 c# visual-studio-2010 absolute-value

我想求一个数的差值。
我试着用这个。我使用了 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/

相关文章:

floating-point - fabs(double)如何在x86上实现?这是一项昂贵的手术吗?

c# - C#计时器2同时执行的 Action

c# - 如何将剪贴板中的文本粘贴到文本框中的光标区域

c# - 如何通过 Windows 窗体 C# 应用程序连接到 Linux 托管数据库?

c# - 在没有 IDE 认为代码无法访问的情况下,如何在 C# 中使用 If DEBUG 语句?

visual-studio-2010 - Visual Studio 2010:断点命中错误的文件

python - 从不同的列中取绝对值的最大值并过滤掉 NaN Python

visual-studio-2010 - -webkit-box-sizing 属性在 VS2010 中不显示

C++ 在代码中指定 header 包含目录

c# - 有没有更有效的方法来计算减法表达式的绝对值