在RPG中显示两位小数?
Display double in 2 decimal places in RPG?
在声明浮点变量时,我不明白 RPG 中存储对象需要多少精度??
在我的练习中,我输入了份数,例如值 5
。
总金额是0.50欧元但是我有喜欢的留言:
我不明白如何在 double 中正确声明变量 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
这是我在 RPGPDM 上找到的。
D Float1 S 8F
https://www.rpgpgm.com/2014/02/defining-variables-in-rpg-all-free.html
您已将 Float1 声明为“双精度”。但问题是浮点数不是固定小数精度数字的好选择。参见 https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems。
如果您处理的数字需要正确的精度,而不仅仅是某种近似值,则应使用 packed 或 zoned。
在你的练习开始时说,不要在 RPG 中使用 FLOAT。这会让你很不开心。回答你的问题:dcl-s total float(8);
你有两个关于浮动的问题:
- 您不希望您的客户因为 1990 年那样的准确性问题而收到错误的发票。
- Decimals 也可以使用硬件支持来更快地求值,这并不“重要”但很不错。
如果你想显示一个浮动,你可以做类似的事情
dcl-s outputString char(10) inz;
dcl-s total float(8) inz (5);
outputString = %char(%dec(total: 10: 2));
dsply outputString;
一些提示:
- 不要使用 /free 或 /end-free 编译器能够自行识别。
- 不要使用固定格式声明来定义您的字段。它们更难阅读,没有实际理由使用它们。
在声明浮点变量时,我不明白 RPG 中存储对象需要多少精度??
在我的练习中,我输入了份数,例如值 5
。
总金额是0.50欧元但是我有喜欢的留言:
我不明白如何在 double 中正确声明变量 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
这是我在 RPGPDM 上找到的。
D Float1 S 8F
https://www.rpgpgm.com/2014/02/defining-variables-in-rpg-all-free.html
您已将 Float1 声明为“双精度”。但问题是浮点数不是固定小数精度数字的好选择。参见 https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems。
如果您处理的数字需要正确的精度,而不仅仅是某种近似值,则应使用 packed 或 zoned。
在你的练习开始时说,不要在 RPG 中使用 FLOAT。这会让你很不开心。回答你的问题:dcl-s total float(8);
你有两个关于浮动的问题:
- 您不希望您的客户因为 1990 年那样的准确性问题而收到错误的发票。
- Decimals 也可以使用硬件支持来更快地求值,这并不“重要”但很不错。
如果你想显示一个浮动,你可以做类似的事情
dcl-s outputString char(10) inz;
dcl-s total float(8) inz (5);
outputString = %char(%dec(total: 10: 2));
dsply outputString;
一些提示:
- 不要使用 /free 或 /end-free 编译器能够自行识别。
- 不要使用固定格式声明来定义您的字段。它们更难阅读,没有实际理由使用它们。