如何将BigDecimal格式化为只显示必要的小数位数?

13

我有一个BigDecimal数字,它可能有0、1或2个小数位(我正在对其调用round(2)的方法)。 我想以这样的方式在视图中显示它,即仅显示所需的小数位数。 换句话说:

 7.0 -> "7"
 7.5 -> "7.5"
 7.67 -> "7.67"

我该如何实现这个?到目前为止,它显示的是"7.0"而不是"7"。

2个回答

12

9

当你拥有极客魔法的sprintf时,你就不需要Ruby on Rails了:

[7.0, 7.5, 7.57].map{ |f| "%g" % BigDecimal.new(f,3) }
#=> ["7", "7.5", "7.57"]

1
这将打败BigDecimal的目的,因为sprintf中的"%g"会将其转换为浮点数,从而失去精度。 - Trent Scheffert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接