0

我对Forth 中的s>dand函数如何工作感到相当困惑。d>s

从我读过的内容来看,打字16.0会放在160 0堆栈上(因为它占用两个单元格)并且d.会显示160.

现在,如果我输入,我16 s>d希望堆栈会像前面的示例一样显示出来。但是,堆栈 is和is 。160 0d.16016 0d.16

我输入的双打不正确吗?不是s>d像“将单格值转换为双格值那样简单吗?这种不规则性有什么原因吗?任何线索都将不胜感激。

4

1 回答 1

2

Gforth 解释所有这些相同的:1.6016.0160.,即160转换为双精度数。而16 s>d16转换为双精度数。

ANS Forth 仅要求当文本解释器处理一个紧跟小数点且未找到定义名称的数字时,文本解释器应将其转换为双单元格数字。 但是 Gforth 超出了这一点:http: //www.complang.tuwien.ac.at/forth/gforth/Docs-html/Number-Conversion.html#Number-Conversion

于 2014-01-15T20:38:21.910 回答