查看完整版本: ruby 格式化输出 浮点数

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语言来的,不是特别喜欢用。哈哈。

cnrefresh 2007-9-4 17:25

呵呵,收获不少啊

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输出呢
请大家指教
页: [1]
查看完整版本: ruby 格式化输出 浮点数