我想在 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
我知道我可以将值转换为十进制,然后最后转换为浮点数以获得正确的结果,如下所示:
public float Frac(float value)
{
return (float)((decimal)value - Decimal.Truncate((decimal)value));
}
但我想知道是否有更好的方法而不使用小数......