我写了一个函数,根据它的参数的数字类型,它的行为会有所不同。整数或浮动。
使用此问题How do I check that a number is float or integer?中的一些代码很容易检测浮动与否,但后来我偶然发现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,即opera和safari都给出了相同的结果:
1 number 1
1.0 number 1 "wrong"
1.1 number 1.1
我知道javascript只知道类型number
,但强制转换似乎过分了。我提出的唯一解决方案是使用'1.0'
等字符串值调用函数,检测点并使用parseFloat
或parseInt
。
有关于此的任何建议吗?
答案 0 :(得分:4)
您已经承认JavaScript只有一种Number
类型。因此,1
与1.0
相同。
如果您需要这个用于显示目的,那么您应该使用toFixed
。
1..toFixed(1); // "1.0"
答案 1 :(得分:0)
number%1===0
如果那个条件是true
,那么它是整数,否则它是浮点数