如果我理解这是正确的,那么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/
你看过你得到的价值了吗?你期待0,但你会得到类似的东西
0.00000000000000012246063538223773
对你来说这不是很接近于零吗?
基本上,当您的输入无法表示为精确的二进制值时,您不应期望二进制浮点运算完全正确 - 如果它不合理,则pi/2不能表示.(即使输入可以精确地以二进制表示,如果输出无法准确表达,您也不应期望结果是准确的...)