【问题标题】:Converting input into nicely formatted numbers (javascript)将输入转换为格式良好的数字(javascript)
【发布时间】:2015-11-05 22:24:48
【问题描述】:

两部分问题。

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

将输入转换为格式清晰且带有“正常”逗号位置的最佳程序是什么。输入的范围可以是:

  • $8000
  • 8200
  • 8,000.50

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

第 2 部分,可能很简单,我只是不知道正确的操作。我想对数字进行四舍五入:根据位数四舍五入。所以一直有两个不四舍五入的数字。

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

【问题讨论】:

  • 为什么这是一个糟糕的问题? 1. 一次问一个问题。 2. 显示一些代码(最少的努力)。 3. 明确定义您的要求。
  • 第二部分不是逻辑,你用小数部分舍入数字,但在这些例子中是整数(带有千位分隔符)

标签: javascript rounding


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2012-11-10
    • 1970-01-01
    • 2018-10-03
    • 2012-02-02
    • 1970-01-01
    相关资源
    最近更新 更多