Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中使用N.NNNN、NN等格式对数字求和_Javascript - Fatal编程技术网

如何在JavaScript中使用N.NNNN、NN等格式对数字求和

如何在JavaScript中使用N.NNNN、NN等格式对数字求和,javascript,Javascript,长话短说。我正在寻找一种用逗号表示小数和千位分隔符求和的方法 目前,我正在尝试使用 sumamount += parseFloat(this.value.replace(/,/g,'')); 它不能正常工作 是否还有其他方法可以删除圆点,将,替换为,,最后再次反转更改?多谢各位 所以,这是可行的,但是。。。不是很漂亮也不是很好,是吗 sumamount += parseFloat(this.value.replace('.', '').replace(',', '.')); 您必须执行难看的

长话短说。我正在寻找一种用逗号表示小数和千位分隔符求和的方法

目前,我正在尝试使用

sumamount += parseFloat(this.value.replace(/,/g,''));
它不能正常工作

是否还有其他方法可以删除圆点,将
替换为
,最后再次反转更改?多谢各位

所以,这是可行的,但是。。。不是很漂亮也不是很好,是吗

sumamount += parseFloat(this.value.replace('.', '').replace(',', '.'));
您必须执行难看的字符串操作才能将像这样的字符串这样的数字转换为Float/number。要“撤销更改”,您可能需要尝试针对您自己的区域设置使用
Number.toLocaleString
(为此)

const someValue=“200.204,23”;
const toNumber=Number(someValue.split(“.”).join(“.”).split(“,”.join(“.”));
控制台日志(toNumber);
console.log(toNumber.tolocalstring(“NL-NL”)

.as控制台包装{top:0;最大高度:100%!important;}
一个干净的方法是使用(1.1kB gzip)

那么

输出

164712.55
或者

给予


您还可以将数字转换为原始格式,然后对其执行任何您希望执行的操作。像这样:

let rev = (a)=>
{
    // r is the real number
    let r = 0;

    a = a.split(",").reverse();

    for(let i = 0; i < a.length; i++)
    {
        r += Number(a[i]) * Math.pow(1000,i);
    }

    return r;
}

let sum = (a,b)=>
{
    return (rev(a) + rev(b));
}

console.log(sum("2,100","1,000.10")); //3100.1
let rev=(a)=>
{
//r是实数
设r=0;
a=a.split(“,”).reverse();
for(设i=0;i
{
申报表(a版)+b版);
}
控制台日志(总和(“2100”、“1000.10”)//3100.1

一个很好的例子不,没有其他办法。JS没有内置的方法来解析这样的数字。你所做的是正确的方法。再简单不过了。有时候这会很痛苦。也许你们想结账。非常感谢你们!我也将查看currency.js。乍一看,这似乎有点太复杂了,不可能是“正确的”
164712.55
v1.add(v2).format()
164.712,55
let rev = (a)=>
{
    // r is the real number
    let r = 0;

    a = a.split(",").reverse();

    for(let i = 0; i < a.length; i++)
    {
        r += Number(a[i]) * Math.pow(1000,i);
    }

    return r;
}

let sum = (a,b)=>
{
    return (rev(a) + rev(b));
}

console.log(sum("2,100","1,000.10")); //3100.1