gpt4 book ai didi

floating-point - 查找接近的 float 之间的 "discrete"差异

转载 作者:行者123 更新时间:2023-12-04 06:45:16 25 4
gpt4 key购买 nike

假设我有两个浮点数,xy ,它们的值非常接近。

计算机上可以表示离散数量的浮点数,因此我们可以按升序枚举它们:f_1, f_2, f_3, ... .我想找到x的距离和 y在这个列表中(即它们是 1, 2, 3, ... 还是 n 离散步长?)

是否可以仅使用算术运算( +-*/ )而不查看二进制表示来做到这一点?我主要对它在 x86 上的工作方式感兴趣。

假设 y > x,以下近似是否正确?还有那个xy仅相隔几步(例如,< 100)? (可能不是 ...)

(y-x) / x / eps

这里 eps表示机器 epsilon。 (机器 epsilon 是 1.0 和下一个最小浮点数之间的差。)

最佳答案

浮点数按字典顺序排列,因此:

int steps(float a, float b){

int ai = *(int*)&a; // reinterpret as integer
int bi = *(int*)&b; // reinterpret as integer
return bi - ai;
}

steps(5.0e-1, 5.0000054e-1); // returns 9

Such a technique在比较浮点数时使用。

关于floating-point - 查找接近的 float 之间的 "discrete"差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6188822/

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