进步ABL格式十进制数字不带前导字符
问题描述:
我只是想格式化一个十进制数字输出到一个简单的CSV格式文件。 我觉得自己很愚蠢,但是我不能找到一种没有引导零或空格的方式,当然我可以简单地修剪前导空格,但是必须有一种恰当的方式来像我那样格式化,不在吗?进步ABL格式十进制数字不带前导字符
例
define variable test as decimal.
define variable testString as character.
test = 12.3456.
testString = string(test, '>>>>>9.99').
message '"' + testString + '"' view-as alert-box. /* " 12.35" */
我尝试使用>>>>>9.99
和zzzzz9.99
为数字格式,但都与格式前导空格的字符串。实际上我不知道使用>
和z
之间有什么区别。
答
替代()函数会做你的描述希望:(抛在TRUNCATE(1.2345,2)如果你真的只需要2位小数)
define variable c as character no-undo.
c = substitute("&1", 1.23).
display "[" + c + "]".
其实,这也可以运行:
string(truncate(1.2345, 2)).
如果您要创建CSV文件,您可能需要考虑使用EXPORT。 EXPORT格式删除前导空格并省略“,”之类的装饰。 SUBSTITUTE()函数基本上使用EXPORT格式来进行替换。当没有指定其他格式时,STRING()函数使用EXPORT格式。
+0
谢谢你,我只需要2位小数,所以应该没问题。 – xander
答
EXPORT
语句将为您的数据格式化。这里有一个例子:
DEFINE VARIABLE test AS DECIMAL NO-UNDO.
DEFINE VARIABLE testRound AS DECIMAL NO-UNDO.
DEFINE VARIABLE testString AS CHARACTER NO-UNDO.
test = 12.3456.
testRound = ROUND(test, 2).
testString = STRING(test).
OUTPUT TO VALUE("test.csv").
EXPORT DELIMITER "," test testRound testString.
OUTPUT CLOSE.
这里是输出:
12.3456,12.35,"12.3456"
的EXPORT
语句的默认分隔符是空格,所以你必须指定一个逗号的CSV文件。由于test
和testRound
变量是小数,因此它们不在输出中引号。 testString
是字符,因此它在引号中。
我不认为有什么办法。进度相当“基于文本”,并假定为了将格式化的数字向上排列,您必须有适量的前导空格等。格式化您的数字并修剪它。如果你不关心格式,只想要数据,如果你不提供格式,我不认为你得到任何前导或尾随空格,但你同样不能设置显示的小数位数等 – Screwtape