0
我基本上想要一个精确到小数点后的第六个的浮点数。有没有一种更有效的方式来产生一个浮点到Ruby中的特定十进制值?
喜欢的东西0.123456
这就是我试图做的:
irb(main):001:0> rand = rand(1.000000..100.000000)
=> 97.63428182481212
但我显然不希望它是精确的,所以我决定做
irb(main):002:0> rand = rand(1.000000..100.000000).round(6)
=> 12.944086
但现在还有一个额外的步骤,看起来我应该能够以另一种方式做到这一点。我将不得不生成几百个数字,所以我不确定是否应该使用它,并使用.round()
。
记住一个数字的呈现方式是相当随意的,在内部它总是会有比显示的更多的信息。所有浮点数都是用十进制表示的近似值。如果你需要六个地方,那么你需要像[BigDecimal](https://ruby-doc.org/stdlib-2.4.1/libdoc/bigdecimal/rdoc/BigDecimal.html)这样的定点方法。 – tadman
四舍五入“几百个数字”应该相对较快。在我的机器上,一千个数字花费了1.5ms。所以,它可能足够满足您的需求。 –
@tadman,是的,你是对的。我最终做了一个从整数到小数的移植,比例为6,最大精度为16。@ Jared Beck,是的,我不知道为什么我很担心。 – dsomel21