Javascript将浮点数字无故强制转换为整数

Javascript casts floating point numbers to integers without cause

本文关键字:转换 整数 数字 Javascript      更新时间:2023-09-26

我编写了一个函数,该函数的行为因其参数的数字类型而异。整型或浮点型。

使用这个问题中的一些代码如何检查数字是浮点还是整数?很容易检测是否为float,但后来我偶然发现,如果使用该数字调用函数,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);

输出铬,萤火虫,即歌剧和狩猎都给出了相同的结果:

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

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

有什么建议吗?

您已经认识到JavaScript只有一个Number类型。因此,11.0是相同的。

如果出于显示目的需要此项,则应使用toFixed

1..toFixed(1); // "1.0"
number%1===0 

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