如何在Smalltalk中将数字转换为字符串(visual works)

如何在Smalltalk中将数字转换为字符串(visual works),smalltalk,tostring,visualworks,Smalltalk,Tostring,Visualworks,我很难在Cincom Smalltalk中找到有关如何获取数字的字符串表示形式的信息。用这种语言是如何实现的?具体来说,我正在编写一个对象的字符串表示,类似于Java中的toString函数。进一步研究后,需要的消息是printString。比如说, | str num | num := 3.14. str := 'An approximate value of pi is ', (num printString). printString方法用于返回字符串,以允许程序员解释数字。如果在示例中

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

进一步研究后,需要的消息是
printString
。比如说,

| str num |
num := 3.14.
str := 'An approximate value of pi is ', (num printString).

printString方法用于返回字符串,以允许程序员解释数字。如果在示例中使用3.14d(双精度),则会在打印字符串中看到“d”字符

这对开发人员来说很好,但如果您正在构建供其他人使用的用户界面,则应该使用PrintConverter。下面是一个例子:

(PrintConverter for: #number withFormatString: '$#,###.##;[RED]($#,###.##);$0.00')
formatStringFor: -35675.389d

如果您检查结果,您将看到它是括号中的红色文本(因为它是负数),并四舍五入到小数点后两位,前面有一个美元符号。对于用户界面来说,这是一种更好的数字显示方式。有关格式化字符的信息,请参阅NumberPrintPolicy的类注释。

要将任何对象转换为用户可读的字符串,请使用“asString”

| str num |
num := 3.14.
str := 'An approximate value of pi is ', num asString.
许多字符串方法将其参数值自动转换为字符串,因此您不必显式调用/send/which:

| str num |
num := 3.14.
str := 'An approximate value of pi is ', num .
(使用ObjectStudio 8.3.1进行测试,这是一种基于Visualworks的Windows smalltalk;但这些示例应适用于任何可用的smalltalk)

正确方法:

Locale当前打印序号:1


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

我建议打开类浏览器,搜索编号,并浏览其层次结构中可用的协议。hi@aring。我试过你的解决方案,但我仍然得到“pi的近似值是一个浮点数”。我想打印数值,但我得到的是“一个浮点”。我真的需要你的帮助。Im stuckstuck似乎
printString
更为标准。Dolphin没有
asString
,但GNU和Squeak有。。。