【问题标题】:Show full decimal in Ruby在 Ruby 中显示完整的小数点
【发布时间】:2013-11-26 01:07:22
【问题描述】:

我想在 Ruby 中打印一个数字的完整十进制值。我有这个:

number = 0.00000254
number.round(8)
puts "Your number equals: " + number.to_s

该数字始终最多保留小数点后八位,我希望始终将它们全部显示出来。但是,上面的代码只返回这个:

=> Your number = 0.0

(四舍五入只是我试图得到小数位数,我不想四舍五入)。我如何强制 Ruby 显示最多 8 个位置,即使末尾有 0,就像数字是 .00000100 一样?

我上周刚开始学习这门语言,所以如果你能在你的回答中使用上面的例子,那就太好了。

谢谢,

马特

【问题讨论】:

  • 为什么会产生错误?我不是简单地声明一个变量吗?我正在使用 1.9.3
  • 嗯,我只是放入 ruby​​ "number = 1.2345" 然后 "puts number.to_s" 打印出来就好了。
  • 1.2345 没问题。缺少前导 0 是语法错误。 0.123 还可以,0.123 没那么多。
  • 你确实是对的。我在代码中有一个零;没有放在这里。谢谢!

标签: ruby-on-rails ruby decimal rounding


【解决方案1】:
number = 0.00000254

puts "%.8f" % number

【讨论】:

  • 效果很好,谢谢。但是,假设我想减去两个数字,number1 和 number2,两个小数的样式都与上面相同。我试过把它们放在这样 puts "%.8f" %(number1 - number2).to_s 但它打印 0.00000000。我该如何解决这个问题?
  • 如果 number1 和 number2 都是 0.00000254,那么它应该是零 :) 试试不带 to_s,这可能会有所帮助。
  • 哦,它们是不同的数字,我的意思是它们都是小数点后八位。我会在某个时候提出一个新问题,你已经帮了我很多了,谢谢。
【解决方案2】:

您可以在 ActionView::Helpers::NumberHelpe 中使用number_with_precision

> include ActionView::Helpers::NumberHelper
 => Object
> number_with_precision(0.00000254, precision: 8)
 => "0.00000254"

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多