当前位置: 首页 > 编程语言 > C#

比较浮点值分享

时间:2023-04-10 12:15:42 C#

比较浮点值刚刚看了一篇关于比较浮点值==还是不应该用的说法!=运算符比较浮点值。大多数浮点值没有精确的二进制表示并且精度有限。如果是这样,比较两个浮点值的最佳方法是什么?以下扩展方法可能有助于实现凯文的建议:publicstaticboolIsEqualTo(thisdoublea,doubleb,doublemargin){returnMath.Abs??(a-b)所以现在你可以这样做:if(x1.IsEqualTo(x2))...if(x1.IsEqualTo(x2,0.01))...只需将IsEqualTo更改为更合适的值,或者根据需要将默认边距更改为double.Epsilon。一般来说,应该使用类似if(abs((x1-x2),但舍入误差会使它们略有不同。“最佳方法”取决于你为什么要比较数字。一般来说,如果你认为你正在检查2个浮点数是否相等,那你就错了。浮点数应该是用来表示词的两种意义上的实际值。这个物体和另一个物体的长度一样吗?好吧,它们可能是一样的长度,但是如果你得到一个足够好的测量设备,你总能找到不同之处。同样,两个浮点数永远不会相等,除非它们测量相同的东西,并且以完全相同的方式处理。除此之外,它只是系统中某处的舍入误差。您可能想检查它们是否接近,(关闭某个阈值)正如其他答案所暗示的那样,但不相等。以上就是《C#学习教程:比较浮点值》的全部内容。注意---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处: