js中toFixed方法使用时的坑

更新时间:2023-08-08 04:07:41 阅读: 评论:0

如何学好普通话js中toFixed⽅法使⽤时的坑
⼀,简要介绍
toFixed(number)是js中⼀个⽤于将⼩数转换为指定位数的⽅法,但是在⼯作中使⽤它时遇到了⼀些坑,特此进⾏记录.
⼆,问题
(1)⼩数转换问题
在刚开始转换的时候⼀直以为转换过后返回的结果应该也是⼩数,结果偶然发现,在⽐较时很明显的⽐较竟然错了,才发现原来toFixed⽅法转换后返回的是字符串...请看例⼦:
/*以下结果是直接在console⾥main进⾏验证的*/
var a = 12.56789;
undefined
typeof(a)
"number"
a = a.toFixed(2);
"12.57"
typeof(a)
"string"新年领导致辞
从上⾯我们可以明显看出经过转换number变为字符串了,那么在⽐较的时候⾃然会出问题,它会按字符串的⽅式来进⾏⽐较,所以当涉及到运算时可能会出现意外的情况,所以正确的做法是涉及数值运算时,可以⽤parFloat()⽅法将字符串转为浮点数
(2)⼩数转换精度问题
我们很多⼈可能都很⾃然的认为toFixed⽅法转换时是采取四舍五⼊的⽅式,但是实际结果并不是这样.请看下⾯的结果:
//以下结果为在Chrome浏览器测试结果
a=12.344男孩的英文名
球缺体积
12.344
"12.34"
a=12.345
12.345
"12.35"
var b = 1.335
undefined
//请注意下⾯的转换
"1.33"
我们发现在计算的过程中出现了1.355,保留两位⼩数后转换结果为1.33,所以在涉及到精密的计算时最好不要使⽤该⽅法进⾏转换,虽然⼤部分的转换都是正常的,但是不同浏览器在处理toFixed⽅法时采⽤的策略有所不同,导致结果会有部分差异.请看测试结果:
//⽕狐浏览器测试
var a=12.344;
undefined
"12.34"
a=12.345;
12.345
"12.35"
var b=1.335;
undefined
金银花煮水
下水管道安装"1.33"
⽕狐与⾕歌保持⼀致,很奇怪为什么1.335保留两位结果就是1.33了呢?下⾯请看ie10的结果:
//以下结果在edge中测试完成,吐槽ie10,打开控制台直接给我卡死了...
var a =12.344
undefined
"12.34"
a=12.345
12.345
"12.35"
集腋成裘var b = 12.355
undefined
"12.36"
最后发现edge的结果是正确的,这真是很神奇啊...需要时可以⾃⼰实现fixed⽅法,以防遇到这样的问题呀
三,总结
恶魔
遇到坑的时候就直接记录下来,⽅便⾃⼰啊,最忌重复踩坑.此外遇到问题,不要想当然了,容易犯经验主义的错误.

本文发布于:2023-08-08 04:07:41,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1106771.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:转换   结果   测试   涉及
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图