声明浮点变量时,我不明白 RPG 中存储对象所需的精度?
在我的练习中,我输入了份数,例如值5
。
总金额为0.50欧元,但我有类似的消息:
我不明白如何以total
双精度正确声明变量。
H
D NumberCopy S 3S 0
D Total S ???
*
/Free
dsply 'Enter your copy number please : ' '' NumberCopy;
If (NumberCopy < 11);
Total = NumberCopy * 0.10;
ElseIf (NumberCopy < 31);
Total = (10 * 0.10) + (NumberCopy - 10) * 0.09;
Else;
Total = (10 * 0.10) + (20 * 0.09) + (NumberCopy - 30) * 0.08;
EndIf;
dsply ('The amount is of ' + %Char(Total) + ' euros');
*inlr = *on;
/End-Free
Run Code Online (Sandbox Code Playgroud)
在这里,我在 RPGPDM 上找到了这个。
D Float1 S 8F
Run Code Online (Sandbox Code Playgroud)
https://www.rpgpgm.com/2014/02/defining-variables-in-rpg-all-free.html
小智 5
您已将 Float1 声明为“double”。但问题是浮点数不是固定十进制精度数的好选择。请参阅https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems。
如果您正在处理需要正确精度而不仅仅是一些近似值的数字,则应该使用打包或分区。
归档时间: |
|
查看次数: |
87 次 |
最近记录: |