JavaScript;如何设置三位数后的点?

JavaScript;如何设置三位数后的点?,javascript,jquery,numbers,price,Javascript,Jquery,Numbers,Price,我有以下JavaScript代码: var calculation = $('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc'))-($('select[name=somevalue1] option

我有以下JavaScript代码:

var calculation = $('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc'))-($('select[name=somevalue1] option:selected').data('calc')-($('select[name=somevalue1] option:selected').data('calc')/100*$('select[name=somevalue2] option:selected').data('calc')))/100*$('select[name=somevalue3] option:selected').data('calc');

$('#calculation').text((calculation).toFixed(2).replace(".",","))
这将计算一个数字,将
更改为
并将其四舍五入到逗号后的两位数

我需要做的是在树的数字后面加一个点,然后再开始

指:

1.234,56
而不是
1234,56

1.234.567,89
而不是
1234567,89


有人知道这样做的方法吗?

你应该使用一个额外的
字符串#替换
一个正则表达式(匹配
)和替换函数(为每个匹配预先添加

您的更新代码:
var计算=$('select[name=somevalue1]option:selected')。数据('calc')-($('select[name=somevalue1]option:selected')。数据('calc'))-($('select[name=somevalue1]option:selected')。数据('calc')-($('select[name=somevalue1]option:selected')。数据('calc'))/100*$)('select[name=somevalue2]选项:selected').data('calc'))/100*$('select[name=somevalue3]选项:selected').data('calc'))
函数格式(n){
返回n.toFixed(2).replace('.',',').replace(/\d{3}(?=(\d{3})*),)/g,函数(s){
返回“.”+s
})
}
$(“#计算”)。文本(格式(计算))

演示实现:
var计算=[
1234.56,
1234567.89,
1234,
.12
]
函数格式(n){
返回n.toFixed(2).replace('.',',').replace(/\d{3}(?=(\d{3})*),)/g,函数(s){
返回“.”+s
})
}

console.log(calculations.map(format))
此功能适用于您:

function formatNumber(num) {
  var first = num.split(',');
  var digits = first[0].split('').reverse();
  var new_digits = [];
  for(var i =0; i<digits.length; i++) {
    if((i+1)%3==0) {
      new_digits.push(digits[i]);
      new_digits.push('.');
    }
    else {
      new_digits.push(digits[i]);
    }
  }
  var new_num = new_digits.reverse().join("")+','+first[1];
  return new_num;
}
函数格式编号(num){
var first=num.split(',');
变量位数=第一个[0]。拆分(“”)。反转();
var新_位数=[];

对于(var i=0;i此代码对我有效:

<p id="calculation"></p>

<script>
    function numberWithCommas(x) {
        var parts = x.toString().split(".");
        parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,".");
        return parts.join(",");
        }

        var calculation = 1231739216.34367;

        document.getElementById("calculation").innerHTML = numberWithCommas((calculation).toFixed(2))
</script>

带逗号的函数编号(x){ var parts=x.toString().split(“.”); 零件[0]=零件[0]。替换(/\B(?=(\d{3})+(?!\d))/g,“.”; 返回零件。连接(“,”); } var计算=1231739216.34367; document.getElementById(“calculation”).innerHTML=numberWithCommas((calculation).toFixed(2))
该代码将:

  • 在dezimal之后四舍五入到两位数
  • 将小数点改为逗号
  • 小数点前每隔三位数设置一个点

  • ECMAScript国际化API具有数字格式功能。
    Intl.NumberFormat()

    您可以将其与纯javascript一起使用:

    var calculation=document.getElementById('money').value;
    //第一路
    var moneyFormatter=new Intl.NumberFormat();
    document.getElementById('formattedMoney').innerText=moneyFormatter.format(计算);
    //第二种方式,使用货币
    var moneyFormatter2=新的国际编号格式('en-US'{
    风格:“货币”,
    货币:美元,
    最小分数位数:2
    });
    document.getElementById('formattedMoney2')。innerText=moneyFormatter2.format(calculation);
    计算:
    
    • 数字格式:

    • 货币格式:
    在现代浏览器(Chrome 24+、Firefox 29+、IE11)上,您可以使用Number.prototype.toLocaleString()

    这将使用浏览器的区域设置自动设置数字格式。我的浏览器设置为德语,因此输出为

    3.500,12
    

    如果有其他地区的人使用您的网站,他们将看到他们期望的数字。

    @cartant 1.我不太明白它是如何工作的。2.我不想使用库。添加相应的HTML代码。然后我们可以尝试一下
    3.500,12