真實數具無限精度,電腦定長表示(二進制)導致精度遺失(如 0.2 無法精確表示)。手寫泰勒級數雖可算 sin,但誤差隨角度增大而劇增,且效率遠遜於硬體指令(x86 內建 FSIN/FCOS)。Math 類封裝經驗證的高精度算法,並利用 JVM 內建最佳化。
hypot(x, y):勾股定理的高精度實現計算 √(x²+y²) 直觀寫法 Math.sqrt(x*x + y*y) 易溢位/下溢。hypot 內部採用 fdlibm 庫(C 實現),依 |x|、|y| 相對大小動態選擇算法,極大/極小值皆穩健。
log10(x):以 10 為底對數工程常用。log10(100)=2。負數/零回傳 NaN。補足 log(自然對數)與 lg(以 2 為底,可用 log(x)/log(2))體系。
cbrt(x):立方根每個實數唯一實立方根(負數亦有實根)。僅參數 NaN 時回傳 NaN。
sinh、cosh、tanhsinh(x)=(e^x-e^-x)/2,cosh(x)=(e^x+e^-x)/2。x=r cosh(t), y=r sinh(t) 描繪雙曲線;cosh 曲線即懸鏈線形狀。Math.cosh 繪製懸鏈線(AWT Polygon)。signum(x):符號函數copySign 處理特殊值,比簡易 if-else 正確。Comparable 時快速比較大小。所有新方法均經專家設計、測試,針對邊界條件(極大/極小、NaN、Inf、正負零)優化。直接呼叫比自寫迴圈、泰勒展開、甚至 Math.pow 更快、更準。
第二部分將聚焦浮點數表示細節、ULP、getExponent、scalb、copySign 等位元級操作與精度控制技巧。