标题中的问题是什么。我有一对整数,我想将它转换为浮点数,这样我就可以对它进行浮点数学运算(得到一个很好的百分比)。
现在我的代码看起来像这样。
(failure_and_run_count[:failure].round(1) / failure_and_run_count[:run].round(1)) * 100.0
有人请告诉我有一种更好的方法可以将failure_and_run_count中的ints强制转换为浮点数。
答案 0 :(得分:3)
两种可能的选择:
Float 方法接受其参数并将其转换为浮点数,如果转换失败,则终止程序并显示错误。
(failure_and_run_count[:failure] / Float(failure_and_run_count[:run])) * 100.0
to_f :将数字转换为Float。如果该数字不适合Float,则结果为无穷大。
(failure_and_run_count[:failure] / failure_and_run_count[:run].to_f) * 100.0
答案 1 :(得分:2)
方法to_f
就是为了这个目的:
1.to_f # => 1.0
1.to_f.class # => Float
在你的例子中:
failure_and_run_count[:failure] / failure_and_run_count[:run].to_f * 100.0
只需要将一个操作数显式强制转换为Float
,因为当您调用/
方法时,另一个操作数会自动强制执行。
请注意,因为可能会发生令人讨厌的事情:
''.to_f # => 0.0
nil.to_f # => 0.0
'foo'.to_f # => 0.0
答案 2 :(得分:1)
Float (failure_and_run_count[:failure])