Faker上是否有一种方法可以生成0-1之间的随机小数?https://github.com/faker-ruby/faker/issues/1834
Faker::Number.decimal(l_digits= 2, r_digits= 2).within(range: 0..1)
以上不起作用。错误:
undefined method `within' for "12.4" String
12.4是所生成的随机数
如果我不能使用faker,在Ruby中有没有一种方法可以生成这个?我只需要生成一个0到1之间有2个小数位的数字
尝试:
rand.round(2)
rand
生成一个随机数,round
将其舍入为所需的小数位数。这可能会产生一个小于两个十进制数字的数字(例如0.5
)。如果要强制执行此操作,则可以将随机数格式化为字符串:
Kernel.format("%.2f", rand)
其中%f
的格式为float,%.2f
专用于两位十进制数字。实际上,您可以忽略Kernel
并仅调用format
或使用%
,如下所示:
"%.2f" % rand
((我更喜欢Kernel.format
,对我来说更可靠)
现在这带来了另一个问题:
pattern = "%.2f"
Kernel.format(pattern, 0) # => "0.00"
Kernel.format(pattern, 0.9999999) # => "1.00"
因为在格式化数字时它会四舍五入,但突然变得不小于1
。如果两次之间的意思是不包括1,则需要对其进行一些调整:
Kernel.format(pattern, 0.floor(2)) # => "0.00"
Kernel.format(pattern, 0.9999999.floor(2)) # => "0.99"
您可以尝试以下操作:
Faker::Number.between(from: 0.0, to: 1.0).round(2)