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