[英]Math.sin returns unexpected results
Math.sin(Math.PI)
返回1.2246467991473532E-16
Math.sin(-Math.PI)
返回-1.2246467991473532E-16
但是它不應該返回零嗎?
雖然從3.14
和3.15
罪是正確的。
Math.PI
並非完全“π”,它只是π的大約16位近似值(3.141592653589793)。 沒有浮點格式可以精確存儲π。 這就是為什么您沒有得到精確的零的原因。
您無法精確表示PI,因此無法期望確切結果。 如果您認為這是一個錯誤,建議您將結果四舍五入。
打印為(int)Math.sin(Math.PI)
,您將得到0
請注意,將int的Math.sin
始終為0或-1
計算機中浮點函數的本質是它們不精確(請參閱Drop的鏈接)。
如果您想將功能點后的值四舍五入至2(或任意)位數,可以執行
(Math.rint(1e2*Math.sin(Math.PI)))/1e2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.