2015-11-05 69 views
-1

两部分问题。将输入转换为格式良好的数字(javascript)

第1部分是容易的,但我想知道你在想什么是最优雅的解决方案:

什么是最好的程序来使用输入转换成完全格式化,并以“正常”的逗号位置。输入范围可以从:

  • $ 8000个
  • 8,000.50

而且我希望它输出简单:8000

第2部分,可以很容易我只是不”不知道正确的操作。我想整理数字,以便:根据数字位数进行四舍五入。因此,始终有两个未被占用的数字。

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

为什么这是一个糟糕的问题? 1.一次提出一个问题。 2.显示一些代码(最小的努力)。 3.明确你的要求。 – Amit

+0

第二部分不是逻辑,你用小数部分整数,但在这些例子中是整数(带有千位分隔符) – jherax

回答

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