我想知道,爲什麼Math.sin(double)
委託給StrictMath.sin(double)
,當我在Reddit thread中發現問題時。所提到的代碼片段看起來像這樣(JDK 7u25):爲什麼Math.sin()委託給StrictMath.sin()?
Math.java:
public static double sin(double a) {
return StrictMath.sin(a); // default impl. delegates to StrictMath
}
StrictMath.java:
public static native double sin(double a);
第二個聲明是native
這是合理爲了我。的Math
的文檔指出:鼓勵
代碼生成器使用特定於平臺的本機庫或者微處理器指令,如果有的話(...)
,問題是:ISN」 t實現了特定於平臺的本地庫是否足夠? JIT還可以知道關於該平臺的更多信息,而不是已安裝的JRE(請僅專注於這種情況)?換句話說,爲什麼不是Math.sin()
本機已經?
可能重複[java.lang.Math和java.lang.StrictMath有什麼區別?](http://stackoverflow.com/questions/4232231/whats-the-difference-between-java-lang-數學和Java的郎strictmath) –
@Ruchira,你可以在我的問題看,我專注於東西比計算的精度不同(這是** **在文檔中描述) – emesx