Javascript 从 NumberFormat 获取小数和千位分隔符

Posted

技术标签:

【中文标题】Javascript 从 NumberFormat 获取小数和千位分隔符【英文标题】:Javascript get decimal and thousands separator from NumberFormat 【发布时间】:2015-06-18 11:04:23 【问题描述】:

我正在寻找一种从 NumberFormat 对象中获取小数和千位分隔符的方法。

var de = new Intl.NumberFormat('de-DE');

稍后我计划使用它们将格式化的字符串解析回 javascript 的浮点数。我知道我可以创建样本编号,然后使用正则表达式对其进行扫描,但我觉得必须有一些更简单的方法来获取这些分隔符。

【问题讨论】:

您确定不是在寻找toLocaleString() 【参考方案1】:

似乎您可以避免自己进行解析:

Intl.NumberFormat('de-CH').v8Parse(
    Intl.NumberFormat('de-CH').format(1000) // => 1'000
) // => 1000

但这听起来非常特定于 chrome :)

但如果我是你,我会尽量避免将本地化的数字以字符串形式表示为数字。

【讨论】:

哇,它会非常好,但我们必须等待更广泛的浏览器支持。 是的,最好不要将字符串解析为数字,但有时在客户端我们必须知道用户输入了什么数据。【参考方案2】:

这里是返回格式化的js函数

function customNumberFormat( num)
    var parts = (''+ (num<0?-num:num)).split("."), s=parts[0], i=L= s.length, o='',c;
    while(i--) o = (i==0?'':((L-i)%3?'':','))+s.charAt(i) +o 
    return (num<0?'-':'') + o + (parts[1] ? '.' + parts[1] : ''); 

【讨论】:

你能解释一下这个函数到底是做什么的吗?

以上是关于Javascript 从 NumberFormat 获取小数和千位分隔符的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Excel JavaScript API 设置 NumberFormat

从NumberFormat格式中删除货币字符()[重复]

如何将 NumberFormat 从特定货币更改为美元货币

如何将 Intl.NumberFormat 与本机反应一起使用?

在应用级别指定 NumberFormat

从 EditText 获取数据输入时,导致应用程序崩溃 Android 的 NumberFormat 错误