如何在Smalltalk中将数字转换为字符串(视觉作品)

时间:2013-09-30 21:23:21

标签: smalltalk tostring visualworks

我很难找到有关如何在Cincom Smalltalk中获取数字的字符串表示的信息。这是如何用这种语言表达的?具体来说,我正在编写一个对象的字符串表示,类似于Java中的toString函数。

4 个答案:

答案 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

它使用图像中的当前区域设置。