Javascript之Number

本文深入探讨JavaScript中数值运算的特点及常见问题,例如浮点数加法的精度丢失现象,并对比Number()、parseInt()及parseFloat()函数在处理不同类型输入时的行为差异。

//一切从基础开始,之前忙于工作没时间去整理这些东西,现在就算是做个笔记
/*
alert(0.2+0.4);//这里值值总是和这俩个值的和不等
alert(0.14+0.16)//这里也是一样 输出结果并不是0.3
alert(0.2+0.2);//这里显示没有问题 输出0.4
alert(Infinity);//输出 Infinity
alert(-Infinity);//输出 -Infinity
alert(Infinity+Infinity) //输出Infinity
alert(Infinity-Infinity) //输出 NaN
alert(2.0e+308)//输出Infinity
alert(Number.MAX_VALUE+Number.MAX_VALUE)//输出Infinity
alert(NaN==NaN);//输出false
alert(isNaN(NaN));//输出 true
alert(isNaN("120"));//输出false 说明数字形式的字符串不能通过isNaN
alert(isNaN("123fsf"));//返回false
alert(isNaN(true))//返回false 因为这里把true转换为1了
alert(isNaN(false))//返回false 因为这里把true转换为0了
*/
var s;
// Number() , parseInt() , parseFloat() 之比较
alert(Number(true)+"-"+parseInt(false))//返回 1-NaN 这说明俩个函数在对Boolen值转换的时候的不一样,Number对于true和false分别返回1和0
alert(Number(null)+"-"+parseInt(null))//返回 0-NaN
alert(Number(undefined)+"-"+parseInt(undefined))//返回NaN-NaN 说明这俩个函数在处理undefined类型时候返回结果一样
alert(Number(s)+"-"+parseInt(s))//返回NaN-NaN 说明这俩个函数在处理未被初始化变量类型时候返回结果一样
alert(Number(" ")+"-"+parseInt(" "));//0-NaN
alert(Number("123bbb")+"-"+parseInt("123vcc"));//NaN-123 说明 Number不能转换混合模式的字符串,但parseInt可以
alert(Number("0xA")+"-"+parseInt("0xA"));//10-10 都默认转换成10进制
alert(Number("070")+"-"+parseInt("070", 8));//70-56 Number转换的永远都是10进制,但parseInt可以知道转换的进制

//parseFloat 和 parseInt不同在于,parseFloat会忽略所有的前导0,同时所有16进制的值都返回为0
alert(parseFloat("12.23.33"))//输出12.23 以第一个.为准,多余的删除
alert(parseFloat("0xA"));//输出0 ,16进制的值都返回为0
alert(parseFloat("0092998.3"));//输出92998.3 ,忽略所有的前导0

//总结:在能用parseInt处理的时候就不要去用Number,在使用parseInt的时候指定基数,即使默认的10进制,这是一个好习惯

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值