在 number_to_currency 中使用基于十进制值的动态精度值
在我们的应用中,我们使用 number_to_currency(value, : precision => 2)
。但是,我们现在有一个要求,即该值可能需要显示三位或更多小数位,例如,
0.01 => "0.01"
10 => "10.00"
0.005 => "0.005"
在我们当前的实现中,第三个示例呈现为:
0.005 => "0.01"
我在这里采取的最佳方法是什么? number_to_currency
可以为我工作吗?如果不是,如何确定给定浮点值应显示多少位小数? sprintf("%g", value)
很接近,但我不知道如何让它始终遵守最小 2dp。
Thoughout our app we use number_to_currency(value, :precision => 2)
. However, we now have a requirement whereby the value may need displaying to three or more decimal places, e.g.
0.01 => "0.01"
10 => "10.00"
0.005 => "0.005"
In our current implementation, the third example renders as:
0.005 => "0.01"
What's the best approach for me to take here? Can number_to_currency
be made to work for me? If not, how do I determine how many decimal places a given floating point value should be displayed to? sprintf("%g", value)
comes close, but I can't figure out how to make it always honour a minimum of 2dp.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于精度问题,以下内容不适用于普通浮点数,但如果您使用 BigDecimal ,它应该可以正常工作。
The following will not work with normal floats, because of precision problems, but if you're using
BigDecimal
it should work fine.