【问题标题】:How to number_to_currency precision in rails如何在 Rails 中计算 number_to_currency 精度
【发布时间】:2016-07-20 17:26:43
【问题描述】:

当我通过 number_to_currency 转换任何数字时,它仅在点后显示两个零。我希望如果数字为 1.000,则应显示三个零,如果数字为 1.00,则显示两个零。

如果数字是 1.0,那么在精度 1t 变为 1.00 后,我希望它保持为 1.0。如果数字是 1.000,它会在精度后变为 1.00,我希望它是 1.000

有可能吗?

【问题讨论】:

  • 您的第二句话不清楚:“我希望如果数字为 1.000,则应显示三个零,如果数字为 1.00,则显示两个零。”你这是什么意思?您可以编辑您的问题以包含一些输入示例和您想要的输出吗?您是否尝试过:precision 选项as mentioned in the docs
  • 在浮点世界中,1.0、1.00、1.000 都是相同的。你在格式化什么数字?能举出具体的例子吗?
  • 您的问题是关于 number_to_currency 货币将有 2 个尾随零,因为这是货币格式,如果您只想添加一个美元符号然后就这样做。 "$#{number}"。 @tadman 我认为是一个不好的例子,他说的是像 1.1、1.01 和 1.001 这样的数字
  • @engineersmnky 1.001 通常在内部表示为 1.00099999999938238 这样的东西也行不通。
  • @haseeb 这些是数字还是字符串?如果它们是数字,则 1.0 和 1.00 或 1.0000000000000 之间没有区别。小数点后的数字仅在必要时显示,以方便人类。电脑不在乎。有precision option for number_to_currency,但必须提前指定。

标签: ruby-on-rails ruby numbers decimal


【解决方案1】:

我相信这就是你要找的Using a dynamic precision value in number_to_currency based on the decimal value

您需要修改方法以返回动态精度值,并使用 bigdecimals 而不是浮点数

【讨论】:

    【解决方案2】:

    你可以使用

    sprintf('%.3f', 1.00)
    # => "1.000"
    

    对你有帮助

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2017-08-21
      • 2014-11-20
      • 2015-08-14
      相关资源
      最近更新 更多