實際任務:我想以人工可讀格式打印矩陣(我自己的實現)。作爲一個先決條件,我想我需要能夠指定「將數字表示符合X個字符」。我發現#printShowingDecimalPlaces:
和#printPaddedWith:to:
在Float
和Integer
類(第一種方法在更一般的Number
類)。獨立,他們的工作,但只有小數部分前人的工作和後期的部分之前的分數,如:如何在Smalltalk/Pharo中打印具有固定字符數的數字
10.3 printPaddedWith: Character space to: 5.
"' 10.3'"
-10.3 printPaddedWith: Character space to: 5.
"' -10.3'"
10.3 printShowingDecimalPlaces: 3.
"'10.300'"
而且,他們在科學的形式非常大(或同樣小的數字)動作不理想:
12.3e9 printShowingDecimalPlaces: 3.
"'12300000000.000'"
12.3e9 printPaddedWith: Character space to: 5.
"' 1.23e10'"
所以,我想是這樣的Common Lisp的(FORMAT T "~10g" 12.3d9)
或C的printf("%10g", 12.3e9)
,使得(a)的整個寬度限制爲10個字符和(b),這取決於數的大小選擇最合適的格式。 Pharo中有這樣的東西嗎?
謝謝!到目前爲止它的工作。 '(FloatPrinter freeFormat)totalWidth:n;打印:x'就是我正在尋找的東西。 – mobiuseng