繁体   English   中英

在 Ruby/Rails 或 Faker 中生成一个范围内的随机小数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM