1

假设我使用 32 位浮点数来存储位串(不要问)。进一步假设我想将此浮点数序列化为一个文件(作为浮点数),并在序列化之前对浮点数的十进制表示采用银行家的四舍五入。当我将浮点数读回到程序中时,系统会(自然地)将它存储在一个 32 位浮点数中,该浮点数尽可能接近序列号。

在银行家四舍五入之后,就数字而言,我的序列化浮点数必须有多精确才能确保序列化的浮点数在二进制中与读回的浮点数相等?

4

1 回答 1

2

如果您的问题是您需要多少个十进制数字才能确保转换为十进制并返回到 IEEE 754 单精度产生原始值,那么这个答案将得到回答。这假设进行格式化和解释的软件是好的(语言标准可能不需要它)。

特别是,IEEE 754-2008 标准第 32 页注释 1 中的第五项支持该答案,单数为 9,双数为 17:

从支持的二进制格式 bf 到外部字符序列的转换并再次返回会导致原始数字的副本,只要至少指定了 Pmin (bf) 有效数字,并且在两次转换期间有效的舍入方向属性是舍入到最接近的舍入方向属性。

于 2012-09-06T17:22:30.377 回答