2012-12-07 77 views
1

如果some_float为零,我希望结果为0。我怎么做?如果值为零,则默认为零

some_float = 9.238 
or 
some_float = nil 

some_float.round(2) 
+0

另见这个答案:http://stackoverflow.com/a/953388/44853 –

回答

9

只需拨打一个.to_f前一轮

some_float.to_f.round(2) 

因为当你在零称之为to_f,它会返回0.0

9.238.to_f.round(2) # => 9.24 
nil.to_f.round(2) # => 0.0 
1

@塞尔吉奥的解决方案是更Rubyesque,但概念信任to_f这样的“非感性”输出有点可疑(为什么是nil.to_f 0.0而不是1.0这件事?这也是一个不错的数字)。写一个比较正统的方法是没什么可羞愧的:

some_float ? some_float.round(2) : 0.0 

当然,这看起来有点冗长,但你总是可以选择使用Ruby的许多可能/期权模式之一。我个人使用Ickmaybe

some_float.maybe.round(2) || 0.0