浮点数-逗号后两位数-如何?

时间:2019-04-15 17:40:54

标签: ruby

我试图在Ruby中执行计算。我得到的结果是1589.5833333333333。我想限制逗号后的位数。

结果应始终限制为两位数,如下所示:

1589.58

  • 问题1 =如何设置限制?
  • 问题2 =我如何向上舍入1589.60或向下舍入1589.55

非常感谢您的帮助。语言是红宝石

3 个答案:

答案 0 :(得分:2)

其他选项,但将对象保留为Float

n = 1589.5833333333333
m = n.truncate(2) #=> 1589.58
h = n.round(1) #=> 1589.6 # for the last zero you need to format the string

还有一个棘手的问题:

k = (n*100).to_i.digits.tap{ |ary| ary.first > 5 ? ary[0] = 5 : ary[0] = 0 }.reverse.join('').to_i/100.0
    #=> 1589.55

答案 1 :(得分:0)

对于问题1:

num = 1589.5833333333333
printf('%.2f', num)
=> 1589.58

问题2的四舍五入到第一位:

num = 1589.5833333333333
printf('%.2f', num.round(1))
=> 1589.60

1589.55是一个任意数字,四舍五入通常计算为1589.58。我不知道有没有可以立即使用的Ruby函数。

答案 2 :(得分:0)

非常感谢,我做到了:

def ausgabe(monatsRate, eigenmittel, amrtSatz) 
mntRate = monatsRate 
egnmtl = eigenmittel 
amrt = amrtSatz / 12 enter code here
puts "Monatsrate: CHF #{mntRate.round(2)}" 
puts "Eigenmittel: CHF #{egnmtl.round(2)}" 
puts "Amortisationssatz: CHF #{amrt.round(2)}" 
end 

您将如何与我的逻辑合并?您的更好,但我无法合并语法。