今儿个咱来聊聊 JavaScript 里头咋处理小数,主要是那个四舍五入的事儿。我以为这玩意儿简单得很,不就直接拿来用就完事?结果一上手,还真有点门道。
一开始我直接找,发现大家伙都说有个叫 toFixed() 的方法,说这玩意儿能把数给四舍五入到指定的小数位。我想这不正好嘛就直接拿来用。比如:
- 我有个数是 3.14159,我想保留两位小数,就直接
result = (3.14159).toFixed(2)
。
这么一弄,result
就成 3.14,看起来没毛病。然后我继续测试,发现问题。
当我处理一些特定的数字时,比如 1.*(2)
,照理说应该变成 1.01 ?结果它给我蹦出个 1.00!我当时就懵,心想这啥情况?
后来我去查查资料,发现这 toFixed() 还真有点小坑。它用的不是纯粹的数学上的四舍五入,具体的规则咱也搞不太明白,反正就是有些数会出问题。
然后我又找到另外一个方法,叫 。这个方法是把一个数四舍五入到最接近的整数。那我想,能不能用它来处理小数?
我还真试试,比如我要把 3.14159 保留两位小数,可以这么干:
- 先把 3.14159 乘以 100,变成 314.159。
- 然后用 取整,得到 314。
- 再除以 100,就变回 3.14。
我试几个数,好像比 toFixed() 靠谱点。不过我还是有点不放心,毕竟 主要是用来处理整数的,处理小数总感觉有点别扭。
然后,我又是一顿搜索,发现很多老手都说,处理小数最好还是自己写个函数。我是不太愿意自己写的,比较懒,但是为避免出错,还是自己动手。
根据搜索到的自定义函数,我也弄一个:
- 先把要处理的数乘以 10 的 n 次方(n 是要保留的小数位数)。
- 然后用 取整。
- 再除以 10 的 n 次方,就得到想要的结果。
这么一弄,感觉踏实多。至少我知道它是咋算的,出问题也好排查。
总结一下
这回算是把 JavaScript 里四舍五入的几个方法都给过一遍。发现,还是自己写的函数用着最放心。大家伙要是遇到类似的问题,也别怕麻烦,自己动手写一个!
免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。