cnrefresh 2007-9-3 13:52
ruby 格式化输出 浮点数
我有一个浮点数的结果:obj.account_amt/obj.msg_count=0.012145241587
如果现实出来不格式化的话,是不是太难看了点。
我开始是准备这样(obj.account_amt/obj.msg_count).slice(0,4)
觉得结果还不错,但是一想,要是结果是1242.1245847566这样的呢?不就完了。
最后的解决办法是 [color=Red]‘%0.2f’ (obj.account_amt/obj.msg_count)[/color]就是想要的结果了。
希望对你们也有点帮助!
xavier 2007-9-3 18:57
实际上我喜欢分数,更精确,看看有没有办法表示成分数~
drive2me 2007-9-3 21:17
[quote]原帖由 [i]cnrefresh[/i] 于 2007-9-3 13:52 发表 [url=http://ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=4249&ptid=1118][img]http://ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
我有一个浮点数的结果:obj.account_amt/obj.msg_count=0.012145241587
如果现实出来不格式化的话,是不是太难看了点。
我开始是准备这样(obj.account_amt/obj.msg_count).slice(0,4)
觉得结果还不错,但是一 ... [/quote]
把你的结果也放在这里,要大家共享呀,呵呵!
就这样做,积少成多,知识就是积累和实践出来的。
admin 2007-9-3 21:33
printf, sprintf,从C语言来的,不是特别喜欢用。哈哈。
lgn21st 2007-9-4 23:35
刚才查看了一下rails的number help里面的源代码,跟楼主的用法一致
# Formats a +number+ with a level of +precision+.
# Example:
# number_with_precision(111.2345) => 111.235
def number_with_precision(number, precision=3)
sprintf("%01.#{precision}f", number)
end
lgn21st 2007-9-4 23:36
我以前用的格式化浮点数的笨办法,
是计算税率的时候,对小数点后第三位进行四舍五入。
可以根据实际情况自行扩展
[code]
#==============================================
# Rounding float with two decimal place
# 1.234 => 1.23
# 1.235 => 1.24
#==============================================
def roundf(number)
return ((number * (10 ** 2)).round.to_f)/(10**2)
end
[/code]
antares_sco 2008-2-18 11:52
如果这样只能写成printf('%0.2f',(a/b.to_f));了
确实不太喜欢用printf
能不能用p或者puts输出呢
请大家指教