gpt4 book ai didi

c# - 这是占一定小数位数的有效 float 比较吗?

转载 作者:太空狗 更新时间:2023-10-29 17:58:34 31 4
gpt4 key购买 nike

我正在编写一个扩展方法来比较两个 float ,使用一组小数点(有效数字)来确定它们是否相等,而不是公差或百分比差异。查看有关 float 比较的其他问题,我看到了复杂的实现。我是不是过于简单化了或者这是否有效?

/// <summary>
/// Determines if the float value is equal to (==) the float parameter according to the defined precision.
/// </summary>
/// <param name="float1">The float1.</param>
/// <param name="float2">The float2.</param>
/// <param name="precision">The precision. The number of digits after the decimal that will be considered when comparing.</param>
/// <returns></returns>
public static bool AlmostEquals(this float float1, float float2, int precision = 2)
{
return (Math.Round(float1 - float2, precision) == 0);
}

注意:我正在寻找小数位比较,而不是公差。我不希望 1,000,000 等于 1,000,001。

最佳答案

基于@infact 的回答以及我提出的问题和答案中的一些评论

public static bool AlmostEquals(this float float1, float float2, int precision = 2) 
{
float epsilon = Math.Pow(10.0, -precision)
return (Math.Abs(float1-float2) <= epsilon);
}

这有接受任何整数的好处,您可以使用 precision = -x 检查 > 1.0 的精度,其中 x 是要检查的 10 的幂。

我还建议将默认精度设置为 3,如果将此方法用于财务,默认情况下可以将精确度降低到十分之一便士。

关于c# - 这是占一定小数位数的有效 float 比较吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9180385/

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