【问题标题】:NumeralJS No decimal formatting/roundingNumeralJS 无十进制格式/四舍五入
【发布时间】:2020-10-09 06:56:30
【问题描述】:

我使用 NumeralJS 来格式化金额,如下所示;

numeral(unformattedValue).format(amtFormat);

所以如果amtFormat设置为“0,0.00”,那么如果金额输入为“123.1”,我得到它为“123.10”

但我想要的是小数点后没有格式/舍入等... 因此,如果输入的值为 1.999999,我希望输出为 1.999999(小数点后完全没有变化)

是否可以将一些东西传递给 format() 来实现这一点?我在 NumeralJS 文档中找不到任何内容。

【问题讨论】:

  • 我不确定我是否理解,如果您不需要任何格式,为什么要打电话给format?你能打电话给value()吗?
  • 其实有两件事...千位分隔符格式(我想应用),但小数应该保持原样...

标签: javascript numeral.js


【解决方案1】:

鉴于您的要求:

  • 格式化千位分隔符
  • 保持小数“原样”

您可以尝试以下一个选项。可能有一种更简单的方法来做到这一点,也许通过定义一个自定义format,但这里有一个想法:

// example input
let input = [1549.9988, 1549123.9912938, 123.456];

input.forEach(i => {

    // count the number of decimals
    let numberOfDecimals = i.toString().split(".")[1].length;

    // construct a string representing the number of decimals to retain
    let decFormat = "0".repeat(numberOfDecimals - 1);

    // format the number using this string
    let num = numeral(i).format("0,0[." + decFormat + "]");

    console.log(num);
    
});
<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>

【讨论】:

  • 非常感谢..实际上生成随机数的 0 来格式化是我已经尝试过的东西,而且效果很好......我正在寻找的是是否有任何方法可以避免这种情况和使用 NumeralJS 的一些内置方式来实现相同的....
  • 我看了一点 format 的工作原理,并没有创建自己的自定义格式来应用正则表达式,看起来没有很多(如果有的话)其他内置选项。我同意这将是一个有用的功能。可能值得与开发团队在 GitHub 上打开一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2015-07-30
  • 1970-01-01
相关资源
最近更新 更多