0

正是问题在标题中所说的。我有一对整数,我想将其转换为浮点数,以便可以对其进行浮点数学运算(以获得不错的百分比)。

现在我的代码看起来像这样。

(failure_and_run_count[:failure].round(1) / failure_and_run_count[:run].round(1)) * 100.0

有人请告诉我有一种更好的方法可以将 failure_and_run_count 中的整数强制转换为浮点数。

4

3 回答 3

3

两种可能的选择:

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
于 2013-05-31T14:58:43.123 回答
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
于 2013-05-31T14:57:06.287 回答
1
Float (failure_and_run_count[:failure])
于 2013-05-31T14:56:50.983 回答