cos(90)值不对

mirrorspace 2019-10-09 02:03:35
如题
Math.cos(Math.PI/2)
结果是这个值
6.123233995736766e-17

大圣
这要怎么处理?
...全文
851 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mirrorspace 2019-10-09
  • 打赏
  • 举报
回复
卧槽,此法甚好!
引用 9 楼 天际的海浪 的回复:
引用 2 楼 mirror030 的回复:
第二个参数是说明意思呢? 我查资料没找到 [quote=引用 1 楼 usecf 的回复:] Math.round(Math.cos(Math.PI/2),15)
也可以用这个方法 parseFloat(Math.cos(Math.PI/2).toFixed(15)) [/quote]
天际的海浪 2019-10-09
  • 打赏
  • 举报
回复
引用 2 楼 mirror030 的回复:
第二个参数是说明意思呢? 我查资料没找到
引用 1 楼 usecf 的回复:
Math.round(Math.cos(Math.PI/2),15)
也可以用这个方法 parseFloat(Math.cos(Math.PI/2).toFixed(15))
mirrorspace 2019-10-09
  • 打赏
  • 举报
回复
厉害了
引用 7 楼 天际的海浪 的回复:
很多数学函数都有一个精度,并且精度在不同环境下也是不相同的。这就意味着不同的浏览器会给出不同的结果,甚至相同的 JS 引擎在不同的OS或者架构下也会给出不同的结果。 Math.cos(Math.PI/2)的结果应该是0,但是由于计算精度的问题有误差, 6.123233995736766e-17 也就是 0.00000000000000006123233995736766 其实非常接近于0了。
天际的海浪 2019-10-09
  • 打赏
  • 举报
回复
很多数学函数都有一个精度,并且精度在不同环境下也是不相同的。这就意味着不同的浏览器会给出不同的结果,甚至相同的 JS 引擎在不同的OS或者架构下也会给出不同的结果。 Math.cos(Math.PI/2)的结果应该是0,但是由于计算精度的问题有误差, 6.123233995736766e-17 也就是 0.00000000000000006123233995736766 其实非常接近于0了。
mirrorspace 2019-10-09
  • 打赏
  • 举报
回复
好的,但是MDN上有一个 function round(number, precision) { return Math.round(+number + 'e' + precision) / Math.pow(10, precision); //same as: //return Number(Math.round(+number + 'e' + precision) + 'e-' + precision); } [quote=引用 5 楼 usecf 的回复:] 嗯 js中round是没有这个参数 你也可以不用这个
usecf 2019-10-09
  • 打赏
  • 举报
回复
嗯 js中round是没有这个参数 你也可以不用这个
mirrorspace 2019-10-09
  • 打赏
  • 举报
回复
但是JS自带的rount方法没有这个参数呢? 别人另外实现的就有
引用 3 楼 usecf 的回复:
表示的是精度
usecf 2019-10-09
  • 打赏
  • 举报
回复
表示的是精度
mirrorspace 2019-10-09
  • 打赏
  • 举报
回复
第二个参数是说明意思呢? 我查资料没找到
引用 1 楼 usecf 的回复:
Math.round(Math.cos(Math.PI/2),15)
usecf 2019-10-09
  • 打赏
  • 举报
回复
Math.round(Math.cos(Math.PI/2),15)

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧