[英]Generate a Random Decimal within a range in Ruby/Rails or Faker
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 个小数位的数字
您可以尝试以下操作:
Faker::Number.between(from: 0.0, to: 1.0).round(2)
尝试:
rand.round(2)
rand
生成一个随机数,将其round
到所需的小数位数。 这可能会生成一个小于两位十进制数字的数字(例如0.5
)。 如果要强制执行此操作,可以将随机数格式化为字符串:
Kernel.format("%.2f", rand)
其中%f
是浮点格式,而%.2f
特定于两位十进制数字。 您实际上可以省略Kernel
并只调用format
或使用%
像这样:
"%.2f" % rand
(我更喜欢Kernel.format
,对我来说似乎更容易阅读)
现在这带来了另一个问题:
pattern = "%.2f"
Kernel.format(pattern, 0) # => "0.00"
Kernel.format(pattern, 0.9999999) # => "1.00"
因为在格式化数字时它会被四舍五入,突然不小于1
。 如果你的意思是 NOT INCLUDING 1 你需要再调整一下:
Kernel.format(pattern, 0.floor(2)) # => "0.00"
Kernel.format(pattern, 0.9999999.floor(2)) # => "0.99"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.