gpt4 book ai didi

c++ - 从整数到 [0,1] 浮点区间的函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:11 25 4
gpt4 key购买 nike

给定一个整数,我想在区间 [0,1] 中生成一个唯一的 float 。 (此号码将用作 ID)。我在所有我考虑过的函数中发现的问题是,它们在用完整数值之前遇到重复项。例如,如果 f(a:int):float = 0.a 那么 f(16000) = 0.16f(16001) = 0.16001 .但由于它是 float ,0.160.16001 可能表示相同。换句话说,我需要一个函数,它不仅可以生成唯一的数字,还可以生成唯一表示的数字(至少对于 C++ 整数域)。

我知道答案取决于特定环境中整数和 float 的大小,但如果您能给出特定大小的示例,它仍然会有所帮助。

最佳答案

正如其他人所指出的,您可以简单地将 int 转换为相同大小的 float 以获得唯一的 float (对 进行一些后过滤) NaN-0Inf)。但是,这不能满足您在 [0,1] 中的要求。事实上,您可以使用该关系来表明 [0,1] 中没有足够的 float 来表示整数集。如果您使用 double 那么尾数对于 32 位 int 来说足够大,并且像 I/(double)INT_MAX 这样的表达式应该足够了(显然允许无符号,如果你需要)。

关于c++ - 从整数到 [0,1] 浮点区间的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4575598/

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