开发者问题收集

在 Javascript 中对值进行四舍五入

2011-03-28
464

我遇到过这种情况,如果用户输入例如 000.03 ,我想将其显示为 .03 ,而不是 000.03 。如何使用 Javascript 实现此目的?

3个回答

您可以使用正则表达式:

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

根据您的喜好进行调整。

Álvaro González
2011-03-28

这实际上比乍一看要棘手得多。删除前导零不是标准的 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));
Steven Ryssaert
2011-03-28

怎么样:

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"

或者调整 Álvaro G. Vicario 的解决方案以消除前导零:

String(parseFloat("090.03")).replace(/^0+\./, ".")
KooiInc
2011-03-28