gpt4 book ai didi

floating-point - 如何确定两个任意 a 和 b 之间唯一 float 的数量?

转载 作者:行者123 更新时间:2023-12-04 06:37:38 24 4
gpt4 key购买 nike

如何编写一个通用的 C 例程 num(a,b) 来计算 a 和 b 之间的 float 的个数?假设 a 和 b 都是 double 类型。

例如,num(0,1e-17) 应该返回 01e-17 之间的 double 。

最佳答案

除了“ab 都是 double 类型”之外,此答案还假定 double 映射IEEE 754 double ,并且它的表示,作为一个 uint64_t 整数访问,被解释为与 float 相同的字节序。主流编译平台都是这样。

在这些假设下,正负 float 的表示是连续的 64 位整数。因此,为了计算两个相同符号的 float 之间有多少个数,请计算它们的表示之间的整数个数,这些表示解释为 64 位无符号整数:

double a, b;

uint64_t a1, b1;
memcpy(&a1, &a, 8);
memcpy(&b1, &b, 8);
int64_t d = a1 - b1;
if (d<0) d = -d;
d++; /* account for both a and b e.g. if a==b, they enclose one FP number */

如果 float 的符号不同,则计算负数和-0.0之间的 float 个数,以及正数之间的 float 个数一和+0.0,使用上述方法。然后将这两部分相加。

关于floating-point - 如何确定两个任意 a 和 b 之间唯一 float 的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39258119/

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