在Javascript中舍入值

时间:2011-03-28 10:10:57

标签: javascript numbers

我的情况是,如果用户输入例如000.03,我想将其显示为.03而不是000.03。我怎么能用Javascript做到这一点?

6 个答案:

答案 0 :(得分:2)

这实际上比最初看起来更棘手。删除前导零不是标准Javascript。我在网上找到了这个优雅的解决方案并进行了一些编辑。

function removeLeadingZeros(strNumber)
{
  while (strNumber.substr(0,1) == '0' && strNumber.length>1)
  {
    strNumber = strNumber.substr(1);
  }
  return strNumber;
}

userInput = "000.03";
alert(removeLeadingZeros(userInput));

答案 1 :(得分:2)

您可以使用正则表达式:

"000.03".replace(/^0+\./, ".");

根据自己的喜好调整。

答案 2 :(得分:1)

此函数将接受任何字符串并尝试将其解析为数字,然后按照您描述的方式对其进行格式化:

function makePretty(userInput) {
  var num,
      str;
  num = parseFloat(userInput); // e.g. 0.03
  str = userInput.toString();
  if (!isNaN(num) && str.substring(0, 1) === '0') {
    str = str.substring(1); // e.g. .03
  } else if (isNaN(num)) {
    str = userInput; // it’s not a number, so just return the input
  }
  return str;
}

makePretty('000.03'); // '.03'
makePretty('020.03'); // '20.03'

你把它无法解析为数字的东西喂它,它会把它还给它。

更新:哦,我看到如果还需要删除单个前导零。更新了代码。

答案 3 :(得分:1)

怎么样:

function showRounded(val) {
    var zero = parseInt(val.split('.')[0],10) === 0;
    return zero ? val.substring(val.indexOf('.')) : val.replace(/^0+/,'') );
}
console.log(showRounded('000.03')); //=> ".03"
console.log(showRounded('900.03')); //=> "900.03"
console.log(showRounded('009.03')); //=> "9.03"

或者调整ÁlvaroG。Vicario的解决方案以摆脱领先的零点:

String(parseFloat("090.03")).replace(/^0+\./, ".")

答案 4 :(得分:0)

假设您的输入格式相同,并且您想要显示.

user = "000.03";
user = user.substring(3);

答案 5 :(得分:0)

您可以将字符串转换为数字并将其转换为字符串,以将其格式化为"0.03"

var input = "000.03";
var output = (+input).toString(); // "0.03"

要摆脱任何前导零(例如“.03”),你可以这样做:

var input = "000.03";
var output = input.substr(input.indexOf(".")); // ".03"

然而,这不正确地将“20.30”剥离为“.30”。您可以结合前两种方法来解决这个问题:

var input = "000.03";
var output = Math.abs(+input) < 1 ?
    input.substr(input.indexOf(".")) :
    (+"000.03").toString();