floating-point - 任何人都可以澄清结果值是如何得出的吗?

标签 floating-point mainframe pl-i

PL/I 中的代码片段如下:

DECLARE WAVE_LTH FLOAT BINARY(21);

...

WAVE_LTH = 11001E-10B (**resultant value = 0.0244140**)

任何人都可以澄清结果值是如何得出的吗?

最佳答案

有问题的程序语句可能来自运行在 IBM System/360 硬件上的 PL/I 程序。这使用了十六进制浮点表示,有关详细信息,请参阅此 Wikipedia article .

根据我关于 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。

关于floating-point - 任何人都可以澄清结果值是如何得出的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345912/

相关文章:

java - 为什么多次加0.1仍然无损?

programming-languages - : PROC,是什么语言VERIFY,DECLARE,SCREEN,CMS,

来自 RDz 的 Java Web 服务调用

ascii - 如何使用Java解压缩COMP-3数字?

mainframe - 为什么比较不像我怀疑的那样有效? PL/I

pl-i - 我在哪里可以找到适用于 Windows 的 PL/I 编译器?

c - 结构中的数据对齐和avx优化

C++ 处理过高的精度

float() 的 Python 无效文字