簡體   English   中英

Math.sin返回意外結果

[英]Math.sin returns unexpected results

Math.sin(Math.PI)返回1.2246467991473532E-16

Math.sin(-Math.PI)返回-1.2246467991473532E-16

但是它不應該返回零嗎?

雖然從3.143.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM