将输入转换为格式良好的数字(javascript)

将输入转换为格式良好的数字(javascript),javascript,rounding,Javascript,Rounding,问题分为两部分 第1部分很简单,但我想知道您认为最优雅的解决方案是什么: 将输入转换为干净格式且具有“正常”逗号位置的最佳过程是什么。输入的范围可以是: 8000美元 8200 8000.50 我希望它能简单地输出:8000 第二部分,可能很简单我只是不知道正确的操作。我想对数字进行四舍五入,这样:它是根据位数进行四舍五入的。因此始终有两个未舍入的数字 45643应该是46000 453应该是450 59023920应该是59000000 以下代码应能回答问题的两部分: var input

问题分为两部分

第1部分很简单,但我想知道您认为最优雅的解决方案是什么:

将输入转换为干净格式且具有“正常”逗号位置的最佳过程是什么。输入的范围可以是:

  • 8000美元
  • 8200
  • 8000.50
我希望它能简单地输出:8000

第二部分,可能很简单我只是不知道正确的操作。我想对数字进行四舍五入,这样:它是根据位数进行四舍五入的。因此始终有两个未舍入的数字

  • 45643应该是46000
  • 453应该是450
  • 59023920应该是59000000

以下代码应能回答问题的两部分:

var input = "$820322310";               // String input
input = input.replace(/[^0-9\.]/g, ""); // remove all unnecessary characters
input = input.replace(/\.[0-9]+/, "");  // remove all after decimal (convert to integer)
if(parseInt(input[2]) >= 5) {           // rounding to two decimal places
    input[1] = input.slice(0, 1) + (parseInt(input[1]) + 1) + input.slice(2, input.length);
}
var count = 0;
for(var i = input.length-1; i >= 0; i--) {
    if(i > 2) {
        input = input.slice(0, i-1) + "0" + input.slice(i, input.length);
    }
    if(++count == 3 && i != 0) {
        count = 0;
        input = input.slice(0, i) + "," + input.slice(i, input.length);
    }
}

请参见。

为什么这是一个糟糕的问题?1.一次问一个问题。2.显示一些代码(最少的工作量)。3.明确定义您的需求。第二部分不是逻辑,您可以用小数部分对数字进行四舍五入,但在这些示例中是整数(带千位分隔符)