二进制浮点常量所需的最小小数精度
mininal needed decimal precision for binary floating point constants
问题:
假设我们有一些任意十进制数(如 1.3456),它在最后一位的(十进制)单位中是精确的。我们需要多少个地方没有两个二进制浮点数落入十进制数的不精确范围为:
- IEEE 754 单精度
- IEEE 754 双精度
- (也可以考虑其他格式)
另一种提问方式可能是(如果我认为正确的话):需要多少个位置,从常量到浮点数最近的第 2 轮会导致所有十进制数具有相同的浮点数在十进制数的不精确范围内?但是我不确定它是否更清晰。
背景:
当我得到(或给出)十进制常量形式的范围要求时(比如,为了与极限进行比较),总是对这些常量在机器格式中的表示有假设。当谈到浮点数时,我通常会在我的规范中写下类似这样的内容:"The constant limits are assumed to be IEEE-754 single precision constants." 但是如果有人想对这些限制进行精确测试,这无济于事。
感谢用户 asa commet it became quite clear to me, that the answer was right before my eyes in this picture in the relevant wikipedia article 提供 IEEE 754 浮点数。
对于我的用例,我只使用 30 位数字(因为作为一个通用规则很容易记住),或者从数学上精确的数字中导出 30 位并告诉我的测试人员我假设 "rounding to nearest".
另请参阅 the blog post mentioned in
以更准确地关注此问题
问题:
假设我们有一些任意十进制数(如 1.3456),它在最后一位的(十进制)单位中是精确的。我们需要多少个地方没有两个二进制浮点数落入十进制数的不精确范围为:
- IEEE 754 单精度
- IEEE 754 双精度
- (也可以考虑其他格式)
另一种提问方式可能是(如果我认为正确的话):需要多少个位置,从常量到浮点数最近的第 2 轮会导致所有十进制数具有相同的浮点数在十进制数的不精确范围内?但是我不确定它是否更清晰。
背景: 当我得到(或给出)十进制常量形式的范围要求时(比如,为了与极限进行比较),总是对这些常量在机器格式中的表示有假设。当谈到浮点数时,我通常会在我的规范中写下类似这样的内容:"The constant limits are assumed to be IEEE-754 single precision constants." 但是如果有人想对这些限制进行精确测试,这无济于事。
感谢用户 asa commet it became quite clear to me, that the answer was right before my eyes in this picture in the relevant wikipedia article 提供 IEEE 754 浮点数。
对于我的用例,我只使用 30 位数字(因为作为一个通用规则很容易记住),或者从数学上精确的数字中导出 30 位并告诉我的测试人员我假设 "rounding to nearest".
另请参阅 the blog post mentioned in