使用javascript切掉未使用的小数

spr*_*man 12 javascript decimal

我有货币输入,只需要返回有效数字.输入始终有两个小数位,因此:

4.00  ->  4
4.10  ->  4.1
4.01  ->  4.01
Run Code Online (Sandbox Code Playgroud)

这是我目前正在做的事情:

// chop off unnecessary decimals
if (val.charAt(val.length-1) == '0') { // xx.00
    val = val.substr(0, val.length-1);
}
if (val.charAt(val.length-1) == '0') { // xx.0
    val = val.substr(0, val.length-1);
}
if (val.charAt(val.length-1) == '.') { // xx.
    val = val.substr(0, val.length-1);
}
Run Code Online (Sandbox Code Playgroud)

它有用,并且有一定的直接性,我喜欢它,但也许有一种更漂亮的方式.

我想我可以使用一个循环并运行它三次,但实际上看起来它至少在我对if语句进行条件化时会变得笨重.除此之外,还有什么想法吗?我想也有一种正则表达式的方法呢......

sth*_*sth 15

您的代码也会在"1000"之类的数字中删除零.一个更好的变体是只能在小数点后面切出零.使用正则表达式的基本替换将如下所示:

str.replace(/(\.[0-9]*?)0+$/, "$1"); // remove trailing zeros
str.replace(/\.$/, "");              // remove trailing dot
Run Code Online (Sandbox Code Playgroud)

  • 最好使用0+而不是0*,因此如果没有尾随零,则正则表达式不匹配. (2认同)

Óla*_*age 14

我相信parseFloat()会这样做.

parseFloat(4.00) // 4
parseFloat(4.10) // 4.1
parseFloat(4.01) // 4.01
Run Code Online (Sandbox Code Playgroud)