gpt4 book ai didi

.NET 实现 : Double conversion in Math. Min(float, float)

转载 作者:行者123 更新时间:2023-12-04 23:06:55 27 4
gpt4 key购买 nike

为什么 .Net 像这样实现 Math.Min(float, float) 函数:

public static float Min(float val1, float val2)
{
if ((double) val1 < (double) val2 || float.IsNaN(val1))
return val1;
else
return val2;
}

虽然我可以看到 IsNaN 的使用,但我不明白为什么它们在比较值时会转换为 double。这不是比简单地写 val < val 2 慢吗? ?特别是如果我想用它来将一个值钳制为没有太多精度的数字,例如 0f1f .

我应该继续实现一个自定义数学库,它还需要非 NaN 值才能获得最佳性能还是浪费时间?
public static float Min(float a, float b)
{
return a < b ? a : b;
}

最佳答案

Yes, I used Resharper which does exactly that



这就是问题所在,它弄乱了代码。源代码可从 Reference Source 获得,它看起来像这样:
  [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
public static float Min(float val1, float val2) {
if (val1 < val2)
return val1;

if (Single.IsNaN(val1))
return val1;

return val2;
}

很难猜测为什么 Resharper 会这样做,我很容易假设它只是一个错误。喜欢 Microsoft 提供的源代码,不仅是为了准确性,而且评论也很好。

关于.NET 实现 : Double conversion in Math. Min(float, float),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885870/

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