开发者社区> zhanginzaghi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JS编程建议——4:注意JavaScript数据类型的特殊性(1)

简介: 4:注意JavaScript数据类型的特殊性(1)
+关注继续查看

建议4:注意JavaScript数据类型的特殊性(1)
1.防止浮点数溢出
二进制的浮点数不能正确地处理十进制的小数,因此0.1+0.2不等于0.3。

  1. num = 0.1+0.2; //0.30000000000000004
    这是JavaScript中最经常报告的Bug,并且这是遵循二进制浮点数算术标准(IEEE 754)而导致的结果。这个标准适合很多应用,但它违背了数字基本常识。幸运的是,浮点数中的整数运算是精确的,所以小数表现出来的问题可以通过指定精度来避免。例如,针对上面的相加可以这样进行处理:
  2. a = (1+2)/10; //0.3
    这种处理经常在货币计算中用到,在计算货币时当然期望得到精确的结果。例如,元可以通过乘以100而全部转成分,然后就可以准确地将每项相加,求和后的结果可以除以100转换回元。

2.慎用JavaScript类型自动转换
在JavaScript中能够自动转换变量的数据类型,这种转换是一种隐性行为。在自动转换数据类型时,JavaScript一般遵循:如果某个类型的值被用于需要其他类型的值的环境中,JavaScript就自动将这个值转换成所需要的类型。
如果把非空对象用在逻辑运算环境中,则对象被转换为true。此时的对象包括所有类型的对象,即使是值为false的包装对象也被转换为true。
如果把对象用在数值运算环境中,则对象会被自动转换为数字,如果转换失败,则返回值为NaN。
当数组被用在数值运算环境中时,数组将根据包含的元素来决定转换的值。如果数组为空数组,则被转换为数值0。如果数组仅包含一个数字元素,则被转换为该数字的数值。如果数组包含多个元素,或者仅包含一个非数字元素,则返回NaN。
当对象用于字符串环境中时,JavaScript能够调用toString()方法把对象转换为字符串再进行相关计算。当对象与数值进行加号运算时,则会尝试将对象转换为数值,然后参与求和运算。如果不能够将对象转换为有效数值,则执行字符串连接操作。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JS编程建议——4:注意JavaScript数据类型的特殊性(4)
4:注意JavaScript数据类型的特殊性(4)
1087 0
JS编程建议——4:注意JavaScript数据类型的特殊性(3)
4:注意JavaScript数据类型的特殊性(3)
1018 0
JS编程建议——4:注意JavaScript数据类型的特殊性(2)
4:注意JavaScript数据类型的特殊性(2)
953 0
javascript挑战编程技能-第四题:谈个if讲点逻辑
javascript挑战编程技能-第四题:谈个if讲点逻辑
16 0
javascript挑战编程技能-第九题:数据结构
javascript挑战编程技能-第九题:数据结构
10 0
javascript挑战编程技能-第八题:99乘法表
javascript挑战编程技能-第八题:99乘法表
22 0
javascript挑战编程技能-第六题:检查密码强度
javascript挑战编程技能-第六题:检查密码强度
36 0
剑指Offer——二叉搜索树的后序遍历序列(JS实现)
剑指Offer——二叉搜索树的后序遍历序列(JS实现)
38 0
剑指Offer——把数组排成最小的数(JS实现)
剑指Offer——把数组排成最小的数(JS实现)
34 0
剑指Offer——字符串的排列(JS实现)
剑指Offer——字符串的排列(JS实现)
64 0
+关注
zhanginzaghi
IT菜鸟
90
文章
25
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载