我对Forth 中的s>d
and函数如何工作感到相当困惑。d>s
从我读过的内容来看,打字16.0
会放在160 0
堆栈上(因为它占用两个单元格)并且d.
会显示160
.
现在,如果我输入,我16 s>d
希望堆栈会像前面的示例一样显示出来。但是,堆栈 is和is 。160 0
d.
160
16 0
d.
16
我输入的双打不正确吗?不是s>d
像“将单格值转换为双格值那样简单吗?这种不规则性有什么原因吗?任何线索都将不胜感激。
Gforth 解释所有这些相同的:1.60
、16.0
和160.
,即160转换为双精度数。而16 s>d
将16转换为双精度数。
ANS Forth 仅要求当文本解释器处理一个紧跟小数点且未找到定义名称的数字时,文本解释器应将其转换为双单元格数字。 但是 Gforth 超出了这一点:http: //www.complang.tuwien.ac.at/forth/gforth/Docs-html/Number-Conversion.html#Number-Conversion