【发布时间】:2010-12-29 08:23:19
【问题描述】:
我正在做一些四舍五入的计算,偶然发现了一个问题。对于给定的浮点类型,如何表示小于 1 的最大数量?
也就是说,我如何编写/表示值 x 使得 x < 1, x + y >= 1 代表任何 y > 0。
在分数中,这将是x = (q-1)/q,其中q 是类型的精度。例如,如果您以1/999 为增量进行计数,则为x = 998/999。
对于给定的类型(float、double、long double),如何在代码中表达值x?
我还想知道y 的所有值是否都存在这样的值。也就是说,随着y's 指数变小,这种关系可能不再成立。因此,对y 有一定范围限制的答案也是可以接受的。 (我想要的x的值还是存在的,只是关系可能表达的不好。)
【问题讨论】:
-
您在寻找某种公式吗?一个常数?找到它的算法?
-
最好使用常量,但也可以使用函数。
-
看看 dlamch over at netlib