gpt4 book ai didi

c# - 比较浮点值

转载 作者:太空狗 更新时间:2023-10-29 21:03:35 28 4
gpt4 key购买 nike

刚刚看了一个关于浮点值比较的说法

Floating point values shall not be compared using either the == or != operators. Most floating point values have no exact binary representation and have a limited precision.

如果是这样,比较两个浮点值的最佳方法是什么?

最佳答案

以下扩展方法可能有助于实现 Kevin 的建议:

public static bool IsEqualTo(this double a, double b, double margin)
{
return Math.Abs(a - b) < margin;
}

public static bool IsEqualTo(this double a, double b)
{
return Math.Abs(a - b) < double.Epsilon;
}

所以现在你可以这样做:

if(x1.IsEqualTo(x2)) ...
if(x1.IsEqualTo(x2, 0.01)) ...

如果需要,只需将 IsEqualTo 更改为更合适的名称,或将默认边距更改为比 double.Epsilon 更好的值。

关于c# - 比较浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530069/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com