9、 0.1+0.2为什么不等于0.3?
这个属于数字运算中的精度缺失的问题
在0.1 + 0.2这个式子中,0.1和0.2都是近似表示的,在他们相加的时候,两个近似值进行了计算,导致最后得到的值是0.30000000000000004,
此时对于JS来说,其不够近似于0.3,于是就出现了0.1 + 0.2 != 0.3 这个现象。 当然,也并非所有的近似值相加都得不到正确的结果。
有时两个近似值进行计算的时候,得到的值是在JS的近似范围内的,于是就可以得到正确答案。至于哪些值计算后能得到正确结果,哪些不能,我们也不需要去记。
最好的方法就是我们想办法规避掉这类小数计算时的精度问题就好了,那么最常用的方法就是将浮点数转化成整数计算。因为整数都是可以精确表示的。
10.类型转换的规则有哪些?
1.八种基本数据类型除boolean类型不能转换,剩下的七种类型之间都可以进行转换。
2.如果整数型字面量没有超出byte、short、char取值范围的话,可以直接将整数赋值给byte、short、char类型的变量。
3.自动类型转换:小容量向大容量转换,byte<short(char)<int<long<float<double,其中short和char都各占两个字节,但是char可以表示更大的正整数。
4.强制类型转换:大容量转换成小容量,编写时必须添加“强制类型转换符”。但运行时可能出现精度损失,谨慎使用。
5.byte、short、char类型混合