PL/I 中的代码片段如下:
DECLARE WAVE_LTH FLOAT BINARY(21);
...
WAVE_LTH = 11001E-10B (**resultant value = 0.0244140**)
任何人都可以澄清结果值是如何得出的吗?
PL/I 中的代码片段如下:
DECLARE WAVE_LTH FLOAT BINARY(21);
...
WAVE_LTH = 11001E-10B (**resultant value = 0.0244140**)
任何人都可以澄清结果值是如何得出的吗?
有问题的程序语句可能来自在 IBM System/360 硬件上运行的 PL/I 程序。这使用了十六进制浮点表示,有关详细信息,请参阅此Wikipedia 文章。
根据我关于 PL/I 的旧文献,FLOAT BINARY(21)
在这个平台上指定了一个单精度浮点数。21
指定有效尾数位数。由于这对应于FLOAT BINARY
操作数的默认值,因此可以不使用它。由于 base-16 表示,24 位尾数的最高有效三位可能为零;这保证了 21 位的精度。
后缀告诉我们B
浮点字面量使用 base-2 表示。11001
二进制是十进制的 25。指数本身以十进制给出,因此E-10
表示比例因子为 2 -10。因此,这个浮点文字常量的值是 25 / 1024 或 0.0244140。