2017-04-13 86 views
0

我只是想格式化一個十進制數字輸出到一個簡單的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.99zzzzz9.99爲數字格式,但都與格式前導空格的字符串。實際上我不知道使用>z之間有什麼區別。

+0

我不認爲有什麼辦法。進度相當「基於文本」,並假定爲了將格式化的數字向上排列,您必須有適量的前導空格等。格式化您的數字並修剪它。如果你不關心格式,只想要數據,如果你不提供格式,我不認爲你得到任何前導或尾隨空格,但你同樣不能設置顯示的小數位數等 – Screwtape

回答

1

替代()函數會做你的描述希望:(拋在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

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文件。由於testtestRound變量是小數,因此它們不在輸出中引號。 testString是字符,因此它在引號中。

相關問題