js四舍五入函数哪个好用?这几个方法都很简单!

吉云

今儿个咱来聊聊 JavaScript 里头咋处理小数,主要是那个四舍五入的事儿。我以为这玩意儿简单得很,不就直接拿来用就完事?结果一上手,还真有点门道。

一开始我直接找,发现大家伙都说有个叫 toFixed() 的方法,说这玩意儿能把数给四舍五入到指定的小数位。我想这不正好嘛就直接拿来用。比如:

    js四舍五入函数哪个好用?这几个方法都很简单!

  • 我有个数是 3.14159,我想保留两位小数,就直接 result = (3.14159).toFixed(2)

这么一弄,result 就成 3.14,看起来没毛病。然后我继续测试,发现问题。

当我处理一些特定的数字时,比如 1.*(2),照理说应该变成 1.01 ?结果它给我蹦出个 1.00!我当时就懵,心想这啥情况?

后来我去查查资料,发现这 toFixed() 还真有点小坑。它用的不是纯粹的数学上的四舍五入,具体的规则咱也搞不太明白,反正就是有些数会出问题。

然后我又找到另外一个方法,叫 。这个方法是把一个数四舍五入到最接近的整数。那我想,能不能用它来处理小数?

js四舍五入函数哪个好用?这几个方法都很简单!

我还真试试,比如我要把 3.14159 保留两位小数,可以这么干:

  • 先把 3.14159 乘以 100,变成 314.159。
  • 然后用 取整,得到 314。
  • 再除以 100,就变回 3.14。

js四舍五入函数哪个好用?这几个方法都很简单!

我试几个数,好像比 toFixed() 靠谱点。不过我还是有点不放心,毕竟 主要是用来处理整数的,处理小数总感觉有点别扭。

然后,我又是一顿搜索,发现很多老手都说,处理小数最好还是自己写个函数。我是不太愿意自己写的,比较懒,但是为避免出错,还是自己动手。

根据搜索到的自定义函数,我也弄一个:

  • 先把要处理的数乘以 10 的 n 次方(n 是要保留的小数位数)。
  • 然后用 取整。
  • js四舍五入函数哪个好用?这几个方法都很简单!

  • 再除以 10 的 n 次方,就得到想要的结果。

这么一弄,感觉踏实多。至少我知道它是咋算的,出问题也好排查。

总结一下

这回算是把 JavaScript 里四舍五入的几个方法都给过一遍。发现,还是自己写的函数用着最放心。大家伙要是遇到类似的问题,也别怕麻烦,自己动手写一个!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]