我只想格式化十进制数,以便输出到简单的CSV格式文件。 我觉得我很愚蠢,但是我找不到一种方法来做到这一点而不会引导零或空格,当然我可以简单地修剪前导空格,但必须有一种正确的方式来格式化就像我那样,不是吗?
实施例
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
之间有什么区别。
答案 0 :(得分:1)
SUBSTITUTE()函数将执行您想要的操作:
define variable c as character no-undo.
c = substitute( "&1", 1.23 ).
display "[" + c + "]".
(如果你真的只想要2个小数位,则输入TRUNCATE(1.2345,2)。)
实际上,这也有效:
string( truncate( 1.2345, 2 )).
如果您要创建CSV文件,可能需要考虑使用EXPORT。 EXPORT格式删除前导空格并省略","等装饰。 SUBSTITUTE()函数基本上使用EXPORT格式进行替换。当没有指定其他格式时,STRING()函数使用EXPORT格式。
答案 1 :(得分:1)
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
是字符,因此它在引号中。