我很难找到有关如何在Cincom Smalltalk中获取数字的字符串表示的信息。这是如何用这种语言表达的?具体来说,我正在编写一个对象的字符串表示,类似于Java中的toString函数。
答案 0 :(得分:4)
printString方法用于返回一个字符串,以允许程序员解释该数字。如果您在示例中使用了3.14d(双精度型),则会在printString中看到“d”字符。
这对开发人员来说很好,但如果您要为其他人构建用户界面,则应使用PrintConverter。这是一个例子:
(PrintConverter for: #number withFormatString: '$#,###.##;[RED]($#,###.##);$0.00')
formatStringFor: -35675.389d
如果你检查结果,你会看到它是括号中的红色文字(因为它是负数)并四舍五入到带有前导美元符号的两个小数位。这是为用户界面显示的更好的数字。有关格式化字符的信息,请参阅NumberPrintPolicy的类注释。
答案 1 :(得分:3)
经过进一步研究,所需信息为printString
。例如,
| str num |
num := 3.14.
str := 'An approximate value of pi is ', (num printString).
答案 2 :(得分:2)
要将任何Object转换为用户可读的String,请使用'asString'。
| str num |
num := 3.14.
str := 'An approximate value of pi is ', num asString.
许多String方法将其参数值自动转换为String,因此您不必显式调用/发送/显示它:
| str num |
num := 3.14.
str := 'An approximate value of pi is ', num .
(使用ObjectStudio 8.3.1测试,基于Visualworks的Windows smalltalk;但这些示例适用于任何可用的小字符)
答案 3 :(得分:0)
正确的方式:
Locale current printAsNumber: 1
它使用图像中的当前区域设置。