格式化数字 JS 百分比而不乘以 100

Posted

技术标签:

【中文标题】格式化数字 JS 百分比而不乘以 100【英文标题】:Format NumeralJS percentages without multiplying by 100 【发布时间】:2015-02-27 17:24:34 【问题描述】:

在 Handsontable 中,您可以在 numeric 单元格上使用 format 选项来相应地格式化值。由于它使用 NumeralJS,我查看了文档以了解如何格式化数字以仅添加 % 符号而不是乘以 100,但如果不设置我自己的,我找不到如何做到这一点。

示例单元格:


    "type": "numeric",
    "format": "0.00%"

值为 7 时,显示"700.00%"。我希望它显示“7.00%”。有什么方法可以在handsontable中做到这一点?

【问题讨论】:

【参考方案1】:

对于仍在寻找实现此目标的最简单方法的任何人,您可以设置一个数字选项,如下所示:

numeral.options.scalePercentBy100 = false;

感谢 Csaba Toth 创建 PR。 PR Here

【讨论】:

像魅力一样工作!【参考方案2】:

我认为目前没有办法在不更改 numeral.js 文件的情况下执行此操作。

如果需要,您可以通过删除 * 100 部分来编辑 function formatPercentage(在 numberal.js 中找到):

function formatPercentage (n, format, roundingFunction) 
    var space = '',
        output,
        value = n._value/* * 100*/; // comment out or remove * 100 here

    ...

【讨论】:

好的,很高兴知道。我最终使用自定义渲染器使用正则表达式手动格式化它,但这也可以。 不幸的是,我不得不修改 numeric.js。 推了一个PR,但是看未合并的PR数量我并不太乐观。【参考方案3】:

也许比覆盖数字 JS 逻辑更好,您也可以将数字数字化到所需的小数精度,然后在末尾连接百分号。

formatPercent(number) 
    return `$numeral(number).format('0.00')%`;

【讨论】:

以上是关于格式化数字 JS 百分比而不乘以 100的主要内容,如果未能解决你的问题,请参考以下文章

DecimalFormat用法

在 PHP Excel 中添加百分比数字格式

格式化 ExtJS 网格列

java中 DecimalFormat格式的定义

java中 DecimalFormat格式的定义

科学记数法数字转换/保留数值小数点位数(数字格式化)