gpt4 book ai didi

F# - 如何比较 float

转载 作者:行者123 更新时间:2023-12-05 01:48:11 25 4
gpt4 key购买 nike

在 F# 中。如何有效地比较几乎相等的 float ?它也应该适用于非常大和非常小的值。我正在考虑首先比较指数,然后比较有效数(尾数),同时忽略其 52 位的最后 4 位。这是一个好方法吗?如何获取 float 的指数和尾数?

最佳答案

F# float 只是 System.Double 的简写。既然如此,您可以使用 BitConverter.DoubleToInt64Bits有效地(安全地!)将 F# float 值“转换”为 int64 的方法;这很有用,因为它避免了分配 byte[],正如 John 在他的评论中提到的那样。您可以使用一些简单的按位运算从 int64 中获取指数和尾数。

不过正如 John 所说,您最好通过简单的相对准确性检查来获得更好的结果。对于许多用例(例如,检查迭代求解器是否收敛于一个解决方案),它可能是最快的解决方案并且“足够接近”。如果您需要特定的准确性,请查看 NUnit 的代码——它有一些不错的 API,用于断言值在预期值的特定百分比或 ulps 数内。

关于F# - 如何比较 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17040813/

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