2012-01-05 71 views
0

我有一個跟蹤玩家棒球統計數據的應用程序。我希望它顯示沒有前導零的擊球平均數(.333而不是0.333)。我一直在嘗試number_with_precision沒有運氣。使用number_with_precision刪除前導零

這是從我的瀏覽線路:

<%= number_with_precision(@player.batting_average, :precision => 3, 
    :significant => true, :strip_insignificant_zeros => true) %> 

下面是從型號代碼:關於number_with_precision的Rails 3.1.3基於文檔

def batting_average 
    self.hits/self.at_bats.to_f 
end 

,:strip_insignificant_zeros僅適用於零小數點後和:顯着不影響小數點。我錯過了一些簡單的東西嗎

回答

1

有一噸的方法可以做到這一點,但認識到主要的事情是,你正在處理一個浮動,並需要將其在轉換爲字符串使用諸如gsub[]

這裏有一些想法:

def to_ba 
    self.to_s[1..-1] 
end 

gsub

def to_ba 
    self.to_s.gsub(/^0+/, '') 
end 

,或者如果你想瘋了(這是更多的樂趣比什麼都重要):

def to_ba 
    self.to_s.reverse.chop.reverse 
end 

這些都是可以添加到您的價值,如下所示的所有幫助方法:

number_with_precision(stuff).to_ba 

,或者你可能只是附加任何的這些方法您的來電中這樣結尾:

number_with_precision(stuff).to_s[1..-1] 

但是,如果你打算把安打率遍我會使用助手地點。

1

不,這是正確的行爲。你可以寫一個幫手,以正確的方式做,或者只是添加gsub(/^0+/,'')