我已经阅读了一些文本和线程,它们显示了如何从十进制转换为IEEE 754,但是对于如何在不扩展十进制的情况下转换数字仍然感到困惑(以科学计数法表示)

我正在使用的特别号码是9.07 * 10^23,但是任何数字都可以。我将为我的特定示例弄清楚该如何做。

最佳答案

我假设您希望结果是最接近十进制数的浮点数,并且您正在使用双精度浮点数。

对于大多数数字,有一种方法可以相对快速地完成。简而言之,这就是它的工作方式。

您需要将数字分为精确表示为浮点数的乘积或分数的一部分。可以精确表示的10的最大幂是10 ^ 22。因此,要以浮点形式获得9.07e + 23,我们可以编写:

9.07e+23 = 907 * 10^21


根据IEEE-754标准,保证对单个浮点运算进行正确的舍入,因此,将上述乘积以2个双精度浮点数的乘积计算得出的结果将正确舍入。

如果要在转换函数中使用此函数,则可能会将10的幂存储在数组中。

请注意,不能对9.07e-23使用此方法。该数字等于907/10 ^ 23,因此分母将太大而无法精确表示。在这种情况下,以及其他处理非常大或非常小的数字时,您必须使用某种形式的高精度算术。

有关更多详细信息和示例,请参见Fast Path Decimal to Floating-Point Conversion

关于ieee-754 - 将科学计数形式的十进制数转换为IEEE 754,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7425528/

10-14 03:21