【问题标题】:IEEE 754 Floating Point RepresentationIEEE 754 浮点表示
【发布时间】:2012-01-06 09:43:39
【问题描述】:

如何从十进制转换为 IEEE 745 浮点单精度? 我可以处理 0.5、0.75 等小数字 我的问题是我不知道如何处理较小的数字。 例如,

12.1325 * 10^-13

【问题讨论】:

  • 您的问题是什么? “较小的数字”有什么问题?

标签: floating-point computer-science ieee-754 number-formatting arithmetic-expressions


【解决方案1】:

我假设困难在于二进制转换而不是 IEEE 浮点编码(因为您说您知道如何转换 0.5 和 0.75)。对于不太直接的示例,例如 12.1325 * 10-13,我会使用我的 binary converter)。到 70 个地方,0.00000000000121325 是

0.0000000000000000000000000000000000000001010101010111111111100000001111...

四舍五入(手动)到 24 个有效位,即 0.000000000000000000000000000000000000000010101010101111111111

从那里开始,将其编码为浮点数是很严格的。

另一种方法是分析(不过你需要一个好的任意精度计算器的帮助,比如PARI/GP)。首先将 12.1325 * 10-13 重写为 121325/1017,并尝试找到最接近的具有 24 位分子和二分母幂的数:

121325/1017 = x/2n

x = (2n * 121325)/1017

您会发现 n=63 可以满足您的需求:x = 11190256.123714056749056 = 11190256(四舍五入到最接近的整数)。 (11190256 = 101010101011111111110000 二进制,你会看到它与上面的答案匹配。)当你标准化浮点数时,你将从指数中减去 23,得到:1.0101010101111111111 * 2-40

(后一种方法见我的文章Correct Decimal To Floating-Point Using Big Integers。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 2020-11-19
    • 2017-04-08
    • 2013-07-24
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多