gpt4 book ai didi

Javascript:将货币的字符串表示形式转换为数字

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:37 24 4
gpt4 key购买 nike

假设我有一个像这样的字符串格式的金额:

amount = '12,000.00'

我想将其转换为数字 (Javascript) 或 float 。

parseFloat(amount) // this gives me 12 as a result
Number(amount) // this gives me NaN as a result

我认为的其他解决方案是:

parseFloat(amount.replace(/[,]/g, ''))

这很好用。但这里的问题是语言环境。

当金额为 12000,00 欧元时,这将失败。这里的“,”具有完全不同的含义。

我四处寻找好的解决方案,但没有找到。我正在寻找一个通用的解决方案。

最佳答案

这不是那么容易,因为您无法确切知道千位的分隔符是什么以及小数部分是什么

考虑“12.000.000”是 12000.000 === 12000 还是 12000000

但是如果您设置最后一个分隔符始终是小数分隔符的要求 -这意味着如果至少给出一个分隔符,则最后一个 必须是十进制分隔符,*如果后面的数字不超过定义的长度。

那你可以试试下面的方法

编辑

(如果您对旧功能感兴趣,请参阅 revs)

我在最后一个分隔符“,”或“.”之后添加了定义最大数字长度的功能。直到它被视为 float ,之后它作为整数返回

var amounts = ["12000","12.000,00", "12,000.00", "12,000,01", "12.000.02", "12,000,001"];


formatMoney.maxDecLength = 3; //Set to Infinity o.s. to disable it

function formatMoney(a) {
var nums = a.split(/[,\.]/);
var ret = [nums.slice(0, nums.length - 1).join("")];
if (nums.length < 2) return +nums[0];
ret.push(nums[nums.length - 1]);
return +(ret.join(nums[nums.length - 1].length < formatMoney.maxDecLength ? "." : ""));
}

for ( var i=0,j;j=amounts[i];i++)
console.log (j + " -> " +formatMoney(j));

给出输出:

"12000 -> 12000"
"12.000,00 -> 12000"
"12,000.00 -> 12000"
"12,000,01 -> 12000.01"
"12.000.02 -> 12000.02"
"12,000,001 -> 12000001" //as you can see after the last "," there are 3 digits and its treated as integer

另一个JSBin

关于Javascript:将货币的字符串表示形式转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16768428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com