在Ruby中使用.round舍入值时出错

在Ruby中使用.round舍入值时出错,ruby,floating-point,rounding,Ruby,Floating Point,Rounding,下面的代码段在脚本/控制台中运行良好,但在ruby脚本中编译时返回以下错误: :in `round': wrong number of arguments (1 for 0) (ArgumentError) tf={"ph"=>{0=>1.33333333333333, 1=>1.5}, "fee"=>{0=>1.66666666666667}, "test"=>{0=>1.16666666666667, 1=>1.25}, "what"=>

下面的代码段在脚本/控制台中运行良好,但在ruby脚本中编译时返回以下错误:

:in `round': wrong number of arguments (1 for 0) (ArgumentError)

tf={"ph"=>{0=>1.33333333333333, 1=>1.5}, "fee"=>{0=>1.66666666666667}, "test"=>{0=>1.16666666666667, 1=>1.25}, "what"=>{0=>2.0, 1=>2.0}, "for"=>{0=>1.5}, "is"=>{0=>1.83333333333333, 1=>1.75}}

tf.each{|k,v| v.each{|k1,v1| tf[k][k1]=(v1.round(5))}}

有什么想法吗?干杯

从外观上看,您不应该将参数传递给round方法。你已经超过5分了

如果您试图将其四舍五入到小数点后5位,则没有内置的方法(我知道)。这是一个解释如何执行此操作的页面:

从外观上看,您不应该将参数传递给round方法。你已经超过5分了
如果您试图将其四舍五入到小数点后5位,则没有内置的方法(我知道)。这是一个解释如何做到这一点的页面:

Float#round
在和中的工作方式似乎不同:在1.8中,它抱怨给定的参数,在1.9中,返回正确舍入到给定小数数的Float

但是,正如另一个答案中的链接明智地说:

你应该考虑一下你的原因。 进行四舍五入(或 等效)操作。如果是为了 陈述理由只有更好的方式 可能是使用格式字符串 相反,保留原始数据 完好无损

Float#round
在和中的工作方式似乎有所不同:在1.8中,它抱怨给定的参数,在1.9中,返回正确四舍五入到给定小数数的浮点值

但是,正如另一个答案中的链接明智地说:

你应该考虑一下你的原因。 进行四舍五入(或 等效)操作。如果是为了 陈述理由只有更好的方式 可能是使用格式字符串 相反,保留原始数据 完好无损


我需要把每个数字四舍五入到小数点后5位。有趣的是,同一段代码在控制台中工作!这很有趣。我编辑了一个链接来帮助你。我需要把每个数字四舍五入到小数点后5位。有趣的是,同一段代码在控制台中工作!这很有趣。我已经编辑了一个链接来帮助你。