3

我编写了一个函数,该函数的行为取决于其参数的数字类型。整数或浮点数。

使用此问题中的一些代码如何检查数字是浮点数还是整数?很容易检测是否浮动,但后来我偶然发现如果您使用该数字调用函数,javascript 会无缘无故地强制转换1.0为这种情况。1

例子:

function dump(a, b) {
 console.log(a, typeof b, b);
}

dump('1', 1);
dump('1.0', 1.0);
dump('1.1', 1.1);

输出 chrome、firefox、ie、opera 和 safari 都给出了相同的结果:

1   number 1
1.0 number 1 "wrong"
1.1 number 1.1

我知道 javascript 只知道类型number,但强制转换似乎太过分了。我想出的唯一解决方案是使用字符串值调用函数'1.0',例如检测点并使用parseFloatparseInt

对此有什么建议吗?

4

2 回答 2

4

您已经承认 JavaScript 只有一种Number类型。因此,1与 相同1.0

如果您需要此用于显示目的,那么您应该使用toFixed.

1..toFixed(1); // "1.0"
于 2012-08-03T15:41:24.857 回答
0
number%1===0 

如果条件为true,则为整数,否则为浮点数

于 2012-08-03T15:45:00.973 回答