gpt4 book ai didi

c# - 强制 float 的误差相对较小

转载 作者:行者123 更新时间:2023-12-02 05:13:20 25 4
gpt4 key购买 nike

我需要将一个非常小的值添加到一个浮点值,以使其差异不大,从而无法通过相等性测试。

为了避免精度问题,我选择添加一个相对较小的数字,而不是添加一个非常小的数字。这是一个好的解决方案吗?还是有可靠的方法来添加更小的数字?

matrix.m00 += matrix.m00 * 0.0000001f;
matrix.m11 += matrix.m11 * 0.0000001f;
matrix.m22 += matrix.m22 * 0.0000001f;

通过阅读,我发现最好的解决方案是使用下一个可表示的 float 。尽管在 C# 中,执行此操作的过程要么 a) 需要非托管/不安全代码,要么 b) 使用太慢的 BitConverter。所以我认为上述解决方案可行,但我想知道是否有任何问题。

最佳答案

您可以添加 ulp任何双倍(取决于双倍);这是您可以对其添加或减去会改变其值的最小数字。

不过,这些帖子都使用了 BitConverter。不过,我发现了一篇讨论如何在没有不安全代码或 BitConverter 的情况下添加 ulp 的帖子:

http://realtimemadness.blogspot.com/2012/06/nextafter-in-c-without-allocations-of.html

关于c# - 强制 float 的误差相对较小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035928/

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