当前位置:  开发笔记 > 编程语言 > 正文

Math.cos(Math.PI/2)在JavaScript和AS3中返回6.123031769111886e-17?

如何解决《Math.cos(Math.PI/2)在JavaScript和AS3中返回6.123031769111886e-17?》经验,为你挑选了1个好方法。

如果我理解这是正确的,那么JavaScript和ActionScript 3都可以使用弧度.

因此,以下代码的预期输出将是:

Math.PI                 //Expected 3.141592653589793, got 3.141592653589793

Math.sin(0)             //Expected 0, got 0
Math.sin(Math.PI/2)     //Expected 1, got 1
Math.sin(Math.PI)       //Expected 0, got 1.2246063538223773e-16
Math.sin(Math.PI*3/2)   //Expected -1, got -1
Math.sin(Math.PI*2)     //Expected 0, got -2.4492127076447545e-16

Math.cos(0)             //Expected 1, got 1
Math.cos(Math.PI/2)     //Expected 0, got 6.123031769111886e-17
Math.cos(Math.PI)       //Expected -1, got -1
Math.cos(Math.PI*3/2)   //Expected 0, got -1.836909530733566e-16
Math.cos(Math.PI*2)     //Expected 1, got 1

这与Firefox,Chrome,Safari以及Flash Professional CS5.5中的行为相同.我正在使用Mac OS X 10.7.2.

测试:

http://jsfiddle.net/KA4VM/



1> Jon Skeet..:

你看过你得到的价值了吗?你期待0,但你会得到类似的东西

0.00000000000000012246063538223773

对你来说这不是很接近于零吗?

基本上,当您的输入无法表示为精确的二进制值时,您不应期望二进制浮点运算完全正确 - 如果它不合理,则pi/2不能表示.(即使输入可以精确地以二进制表示,如果输出无法准确表达,您也不应期望结果是准确的...)


但是用"6.123031769111886e-17"然后用"0"来计算是不是需要更多的资源?
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有