【发布时间】:2016-11-23 18:52:43
【问题描述】:
任意数字可以很容易地转换为带有一些小数的浮点数。例如,使用(format nil "~,2f" 6) 会得到"6.00"。但是有没有办法使用类似的浮点类型规范直接强制任意数字?即,输出一个数字,而不是一个字符串?或者,我试过(read-from-string (format nil "~,2f" 6)),但这不保留格式。
我想打印一个包含数字(以及其他 lisp 对象)的嵌套树,作为带有两位小数的浮点数。例如,无论 X 中表示的具体数字类型如何,打印输出可能看起来像 X -> (A 3.00 (7.10 B) (C 8.12) 0.75)。set-pprint-dispatch 用于这种输出还是格式足够?
【问题讨论】:
-
我认为您将数字与其印刷表示混淆了。
-
您的意思是要将整数强制转换为浮点数吗?如
(float 6)=>6.0? “保留格式”是什么意思?内存中的数字不包含任何格式。您可以在打印时以您想要的方式格式化任何数字。 -
@sds 是的,现在我知道你是对的。我真正想做的是打印一个不带引号的数字。我应该只使用 (format t "~,2f" 6) 而不是 (format nil "~,2f" 6)。感谢您的澄清。
-
@davypough,我建议编辑你的问题,明确表明你期待
6.00,但你得到的是"6.00"——然后,如果你觉得你现在明白(format t...很舒服正在打印6.00,而(format nil ...正在返回字符串"6.00",请继续写下答案并接受它,以供未来用户使用。
标签: format common-lisp coerce