我正在寻找转换.01或-.01至0.01或-0.01的最佳方法。当我想将小数转换为字符时,这是需要的。
使用Editw和Editc进行了很多搜索后,我最终获得了以下代码。
D Sales S 9S 2
D Net_Sales S 10A
// Sales variable may contain positive or negative amount
If Sales >= 0
Net_Sales = %Trim(%Xlate(' ':'0': %EditC(Sales:'3'):7)) ;
Else
Net_Sales = '-' + %Trim(%Xlate(' ':'0': %EditC(Sales:'3'):7))
EndIf
这对所有情况都很好,但是有些我没有说服。偶然地,我注意到了标题规格DEDIT
H DECEDIT('0.')
这是我的最佳选择,还是我们还有其他任何东西?
预先感谢您的帮助!
如果要在小数前打印零,并且浮动符号,则需要使用ctl-opt decedit('0.')
。这是一些比较%char()
,%editc()
和%editw()
的样本:
dcl-s value1 Zoned(7:2) Inz(.01);
dcl-s value2 Zoned(7:2) Inz(-.01);
dcl-s output Char(10) Inz('');
output = %char(value1);
dsply output;
output = %char(value2);
dsply output;
output = %editc(value1:'N');
dsply output;
output = %editc(value2:'N');
dsply output;
output = %editw(value1:' , 0 . -');
dsply output;
output = %editw(value2:' , 0 . -');
dsply output;
return;
使用ctl-opt decedit('0.');
编译时,输出为:
DSPLY 0.01
DSPLY -0.01
DSPLY 0.01
DSPLY -0.01
DSPLY 0.01
DSPLY 0.01-
无ctl-opt decedit('0.');
编译时,输出为:
DSPLY .01
DSPLY -.01
DSPLY .01
DSPLY -.01
DSPLY 0.01
DSPLY 0.01-