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

时间:2015-11-05 22:24:49

标签: javascript rounding

两部分问题。

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

用于将输入转换为格式正确且WITH" normal"的最佳程序是什么?逗号放置。输入范围可以是:

  • $ 8000
  • 8200
  • 8,000.50

我希望它输出简单:8,000

第2部分,可能很容易我只是不知道正确的操作。我想对数字进行舍入,以便:它根据位数进行舍入。因此,任何时候都有两个未连接的数字。

  • 45,643应为46,000
  • 453应为450
  • 59,023,920应为59,000,000

1 个答案:

答案 0 :(得分:1)

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

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);
    }
}

请见JSFiddle