【问题标题】:Convert string to number in money format JavaScript [duplicate]将字符串转换为货币格式的数字 JavaScript [重复]
【发布时间】:2015-12-30 14:59:59
【问题描述】:

我有字符串“722,311.75”,我想将其转换为数字 722,311.75(货币格式)。以下代码不起作用。

var str = "722,311.75";
var nr = parseFloat(str, 10).toFixed(2);
console.log(nr); // Returns 722.00

知道我该怎么做吗?

【问题讨论】:

  • 只要使用parseFloat(str.replace(/[,]/g, ""));
  • "722,311.75" 不是有效的数字表示。 parseFloat 只会看到第一个数字 (722) 并忽略后面的任何内容并包括逗号。此外,JavaScript 中没有“货币格式”数字这样的东西。数字将是 722311.75,然后您可以提供一个修改后的插入逗号的 toString 函数。
  • 其他重复:stackoverflow.com/questions/4083372/…,以及其他几个。

标签: javascript string


【解决方案1】:

在将字符串传递给parseFloat之前,从字符串中替换,

如果字符串包含多个,,您可以使用ragex 删除所有出现的,

正则表达式/,/ 将匹配字符串中的, 文字,而g 全局标志将使正则表达式匹配所有可能的字符串,即字符串中的所有,

var str = "1,722,311.75";
var nr = parseFloat(str.replace(/,/g, ''), 10).toFixed(2);
document.write(nr);

如果字符串只包含一个,,您可以使用replace 和字符串从字符串中删除,

var str = "722,311.75";
var nr = parseFloat(str.replace(',', ''), 10).toFixed(2);
document.write(nr);

注意replace(',', '') 只会删除第一次出现的,。请参阅第一个代码 sn-p 以了解将替换所有出现的正则表达式方法。

【讨论】:

  • 编辑您的第一个示例。这是无效的。如果str = "5,722,311.75"; 会有问题
  • @SheraliTurdiyev 对,这就是为什么我添加了标题为If the string contains more than one ,的第二个选项
  • @Magus 感谢您帮助改进答案,但您的编辑会覆盖我的更改,因此必须回滚
  • 我添加了评论。好的,只是建议动态方式(无条件)。
  • @SheraliTurdiyev 如果 OP 确定字符串中只有一个 ,,则使用带有替换的字符串比正则表达式更快,所以补充说,如果不是,则仅使用正则表达式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 2013-05-22
  • 2013-12-22
  • 1970-01-01
相关资源
最近更新 更多