如何才能獲得格式化輸出使用p
函數。的紅寶石。 我需要打印一個精確到兩位小數的浮點數。 我想用最小字符做這個,所以我想用p
函數代替puts
和printf
。使用p函數在ruby中格式化輸出
我試過這個 printf"%.2f",a.abs/2
任何想法如何減少字符?
如何才能獲得格式化輸出使用p
函數。的紅寶石。 我需要打印一個精確到兩位小數的浮點數。 我想用最小字符做這個,所以我想用p
函數代替puts
和printf
。使用p函數在ruby中格式化輸出
我試過這個 printf"%.2f",a.abs/2
任何想法如何減少字符?
假設你行約一個字符串返回,您可以使用使用Kernel#sprintf
sprintf "%.2f", 1.234
=> "1.23"
注意printf
實際上就是糖IO.write(sprint())
因此上述應考慮equiavelent。
inspect
是你需要重寫爲p
class Float
def inspect
sprintf "%.2f", self
end
end
結果
p 12.0
#=> 12.00
您可以使用該方法的方法String#%
海峽%ARG→new_str
格式 - 使用str作爲格式規範,並返回將其應用於arg的結果。如果格式規範包含多個替換,則arg必須是包含要替換的值的數組或散列。有關格式字符串的詳細信息,請參閱Kernel :: sprintf。
在您的例子:
a = 5.3
p"%.2f"%a
如果您使用一個公式,你需要額外的括號:
p"%.2f"%(a.abs/2)
也許是很好的瞭解你:你在玩[代碼高爾夫(HTTPS: //en.wikipedia.org/wiki/Code_golf)並且還有http://codegolf.stackexchange.com/ – knut