JavaScript语言运算bug

JavaScript在运算上存在一些不可思议的地方,下面列出几种我已知的一些例子:

/*加法*/
console.log(0.1+0.2);       //0.30000000000000004

/*乘法*/
console.log(0.000001*10);   //0.000009999999999999999

console.log(0.000002*10);   //0.000019999999999999998

console.log(0.0003*10);     //0.0029999999999999996
console.log(0.00003*10);    //0.00030000000000000003

console.log(0.000004*10);   //0.000039999999999999996

console.log(0.0000005*10);  //0.0000049999999999999996

console.log(0.0006*10);     //0.005999999999999999
console.log(0.00006*10);    //0.0006000000000000001

console.log(0.07*10);       //0.7000000000000001
console.log(0.00007*10);    //0.0006999999999999999
console.log(0.07*100);      //7.000000000000001
console.log(0.007*100);     //0.7000000000000001
console.log(0.0007*100);    //0.06999999999999999
console.log(0.00007*100);   //0.006999999999999999

console.log(0.000008*10);   //0.00007999999999999999

console.log(0.09*10);       //0.8999999999999999
console.log(.009*100);      //0.8999999999999999

console.log(0.00009*10);    //0.0009000000000000001


/*除法*/
console.log(0.00001/10);    //0.0000010000000000000002

console.log(0.00002/10);    //0.0000020000000000000003

console.log(0.003/10);      //0.00030000000000000003
console.log(0.0003/10);     //0.000029999999999999997

console.log(0.00004/10);    //0.000004000000000000001

console.log(0.006/10);      //0.0006000000000000001
console.log(0.0006/10);     //0.000059999999999999995

console.log(0.7/10);        //0.06999999999999999
console.log(0.07/10);       //0.007000000000000001
console.log(0.00007/10);    //0.000006999999999999999

console.log(0.00008/10);    //0.000008000000000000001

console.log(0.0009/10);     //0.00008999999999999999
console.log(0.9/100);       //0.009000000000000001
console.log(.009/100);      //0.00008999999999999999


/*字符串转数字取整*/
parseInt(0.0000001);        //1


/*数字转字符串*/
0.0000004.toString();       //"1e-7"


/*数组排序*/
var arr = [12,168,45,95,22];
console.log(arr.sort());    //12,168,22,45,95

github上有位仁兄对背后产生的根源剖析了得比较清楚,有兴趣的可以看看(访问需要借助梯子)
http://elevenbeans.github.io/2017/07/07/floating-point-issue/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值