正是问题在标题中所说的。我有一对整数,我想将其转换为浮点数,以便可以对其进行浮点数学运算(以获得不错的百分比)。
现在我的代码看起来像这样。
(failure_and_run_count[:failure].round(1) / failure_and_run_count[:run].round(1)) * 100.0
有人请告诉我有一种更好的方法可以将 failure_and_run_count 中的整数强制转换为浮点数。
正是问题在标题中所说的。我有一对整数,我想将其转换为浮点数,以便可以对其进行浮点数学运算(以获得不错的百分比)。
现在我的代码看起来像这样。
(failure_and_run_count[:failure].round(1) / failure_and_run_count[:run].round(1)) * 100.0
有人请告诉我有一种更好的方法可以将 failure_and_run_count 中的整数强制转换为浮点数。
两种可能的选择:
Float方法接受它的参数并将其转换为浮点数,如果转换失败,程序将终止并报错。
(failure_and_run_count[:failure] / Float(failure_and_run_count[:run])) * 100.0
to_f:将数字转换为浮点数。如果数字不适合浮点数,则结果为无穷大。
(failure_and_run_count[:failure] / failure_and_run_count[:run].to_f) * 100.0
有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
Float (failure_and_run_count[:failure])