gpt4 book ai didi

c# - 在 C# 中 frac 函数的最快实现

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:24 24 4
gpt4 key购买 nike

我想在 C# 中实现一个 frac 函数(就像这里的 hsl 中的函数 http://msdn.microsoft.com/en-us/library/bb509603%28VS.85%29.aspx )但是因为它是一个非常处理器密集型的应用程序,我想要最好的版本。我正在使用类似

的东西
public float Frac(float value)
{
return value - (float)Math.Truncate(value);
}

但我有精度问题,例如 2.6f 它在单元测试中返回

预期:0.600000024f 但实际为:0.599999905f

我知道我可以将值转换为十进制,然后在最后转换为 float 以获得正确的结果,如下所示:

public float Frac(float value)
{
return (float)((decimal)value - Decimal.Truncate((decimal)value));
}

但我想知道是否有更好的方法而不求助于小数...

最佳答案

float (System.Single 的别名)仅精确到 7 位数字。无论如何,您不应该真正使用相等来比较浮点值。相反,您应该检查它们是否在可容忍的范围内 - 例如,预期值和实际值之间的差异不超过 0.000001。

Assert.AreEqual(expected, actual, delta);

如果您使用 double相反,您将精确到 15-16 位数字。

关于c# - 在 C# 中 frac 函数的最快实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3051466/

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