在此之前,我想说对不起。但这不重复。其他帖子的任何答案都有同样的问题。 JS中没有float或int(仅限数字)。当您执行isInt()
功能时,2.00始终检测到true
为整数。我希望2.00被检测为浮动。所以,我必须首先对它进行字符串化。
function isInt(i) {
if ( i.toFixed ) {
if ( i % 1 === 0 ) {
return true; // the problem is 2.00 always detected true as integer.
// i want 2.00 detected as float
} else {
return false;
}
} else {
return false;
}
}
然后我想我将字符串化2.00然后用split('。')拆分它。但toString没有这样做
var i = 2.00;
alert(i.toString());
// Why this always result 2 . i want the character behind point
那么,该怎么做?我想要2.00结果“2.00”,而不仅仅是“2”
感谢您的回答
答案 0 :(得分:7)
您可以使用Number.toFixed(n);
var i = 2;
alert( i.toFixed(2) ); // "2.00"
var i = 1.2345;
alert( i.toFixed(2) ); // "1.23"
另请注意2 === 2.00
但2 !== "2.00"
。
答案 1 :(得分:1)
在javascript中,绝对没有办法区分2
2.0
和2.000
。因此,如果没有提供额外的小数位,您将从不,能够从var a = 2.00
检测到除了integer
之外的其他任何内容(根据您的方法)分配
尽管存在[误导]内置方法,但并非如此:
typeof parseInt('2.00', 10) == typeof parseFloat('2.00')
'number' == 'number'
/* true */
JavaScript没有基于硬件的标量类型,只是Number
。出于这个原因,并且因为你真的只有一个有意义的数字,JavaScript正在使用你的2.00
并使它成为一个“整数”[松散地使用](因此不存在小数位)。致JavaScript:2 = 2.0 = 2.00 = 2.00000
)。
一个很好的例子,如果我给你一个号码12.000000000000
并要求你记住它并在一周后将它交给某人,你会花时间记住那里有多少个零,或者专注于事实上,我把号码12
递给你了? (twelve
比twelve with as many decimal places
)
就int
与float
/ double
/ real
而言,您实际上只是从您的角度描述数字类型,而不是JavaScript。考虑将JavaScript中的数字称为int
,为其提供标签而不是定义。概述:
Value: To JavaScript: To Us:
------ -------------- ------
1 Number integer
1.00 Number decimal
1.23 Number decimal
无论我们将其归类为什么,JavaScript仍然只将其视为Number
。
如果您需要保留小数位,Number.toFixed(n)
将是您最好的选择。
例如:
// only 1 sig-fig
var a = 2.00;
console.log(''+a); // 2
console.log(a.toFixed(2)); // 2.00
// 3 sig-figs
var b = 2.01
console.log(''+b); // 2.01
console.log(b.toFixed(2)); // 2.01
顺便说一句,在变量''+
前面添加前缀与调用.toString()
相同,它只是简写。如果我使用a.toString()
或b.toString()
答案 2 :(得分:0)
要进行字符串化(Chrome至少这样做)请使用:
i.toPrecision(3)
这将显示2位小数。
同样,NULL的解决方案非常好,无需计算精确的精度。即.toFixed(decimals)
是你最好的朋友
答案 3 :(得分:0)
你无法做你想做的事。
2.00在JavaScript中转换为数字2,没有小数点。如果你想使用.toFixed(2),你可以重新添加它,如上所示。
答案 4 :(得分:0)
我建议保持" 2.00"作为一个字符串,以及如果需要,将其解析为数字用于算术。这样,您可以区分数字2是否输入为" 2"或" 2.00"或" 2.000000"。如果要保留原始小数位数,请输出字符串,而不是数字。