印章用JavaScript未使用的小数(chop unused decimals with java

2019-07-28 23:22发布

我有一个货币输入需要返回只显著数字。 输入总有两位小数,所以:

4.00  ->  4
4.10  ->  4.1
4.01  ->  4.01

下面是我当前如何做:

// 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);
}

它的工作原理,并具有一定的直接它,我有点像,但也许有一个漂亮的方式。

我想我可以使用一个循环,并通过它三次运行,但实际上好像这将是至少由时间笨重的我实现条件if语句。 除此之外,任何想法? 我想有一个正则表达式的方式来做到这一点,太....

Answer 1:

我相信parseFloat()来实现的。

parseFloat(4.00) // 4
parseFloat(4.10) // 4.1
parseFloat(4.01) // 4.01


Answer 2:

你的代码也砍掉零的号码,如“1000”。 一个更好的方法将是一个小数点后零的唯一印章。 基本替代使用正则表达式应该是这样的:

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


Answer 3:

string to string: parseFloat(value).toFixed(2);
string to number: +(parseFloat(value).toFixed(2))
number to number: Math.round(value*100)/100;
number to string: (Math.round(value*100)/100).toFixed(2);


Answer 4:

我想这是你想要的

    v = 33.404034
    v.toFixed(2) # v -> 33.40
    parseFloat(v.toFixed(2)) # 33.4

你有

    v = 33.00704034
    v.toFixed(2) # v -> 33.01
    parseFloat(v.toFixed(2)) # 33.01

    v = 33.00304034
    v.toFixed(2) # v -> 33.00
    parseFloat(v.toFixed(2)) # 33


Answer 5:

所以,你开始用绳子和你想要一个字符串结果,是这样吗?

val = "" + parseFloat(val);

这应该工作。 更简洁

val = "" + +val;

要么

val = +val + "";

将工作为好,但这种形式是太难理解了。

如何做这些工作? 他们将字符串转换为数字,然后回字符串。 你可能不希望使用这些,但我们知道JavaScript的转换工作将如何帮助您调试,不管你做了这一愿望。



Answer 6:

String(4) // "4"
String(4.1) // "4.1"
String(4.10) // "4.1"
String(4.01) // "4.01"

parseFloat工作,但你必须将它转换回一个字符串。



Answer 7:

我想现在就找到一个这样的解决方案。 这是我来到这里。

我用数()我的应用程序的功能,但看起来像它的工作一样parseFloat()

http://jsfiddle.net/4WN5y/

我删除和检查号码前的逗号。

 var valueAsNumber = Number( val.replace(/\,/g,'') );


文章来源: chop unused decimals with javascript