在RPG中显示两位小数?

jul*_*tte 0 rpg rpgle

声明浮点变量时,我不明白 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

如果您正在处理需要正确精度而不仅仅是一些近似值的数字,则应该使用打包或分区。