2015-11-01 34 views
1

如何才能獲得格式化輸出使用p函數。的紅寶石。 我需要打印一個精確到兩位小數的浮點數。 我想用最小字符做這個,所以我想用p函數代替putsprintf使用p函數在ruby中格式化輸出

我試過這個 printf"%.2f",a.abs/2 任何想法如何減少字符?

+0

也許是很好的瞭解你:你在玩[代碼高爾夫(HTTPS: //en.wikipedia.org/wiki/Code_golf)並且還有http://codegolf.stackexchange.com/ – knut

回答

0

假設你行約一個字符串返回,您可以使用使用Kernel#sprintf

sprintf "%.2f", 1.234 
=> "1.23" 

注意printf實際上就是糖IO.write(sprint())因此上述應考慮equiavelent。

+0

我想減少字符數,sprintf有更多 – hotrod

+0

我不明白你的觀點。你想要精確地減少什麼? – Anthony

1

inspect是你需要重寫爲p

class Float 
    def inspect 
    sprintf "%.2f", self 
    end 
end 

結果

p 12.0 
#=> 12.00 
0

您可以使用該方法的方法String#%

海峽%ARG→new_str

格式 - 使用str作爲格式規範,並返回將其應用於arg的結果。如果格式規範包含多個替換,則arg必須是包含要替換的值的數組或散列。有關格式字符串的詳細信息,請參閱Kernel :: sprintf。

在您的例子:

a = 5.3 
p"%.2f"%a 

如果您使用一個公式,你需要額外的括號:

p"%.2f"%(a.abs/2)