首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

Henson Float 庫:J2ME 無 FPU 環境下的浮點運算最佳選擇

     編輯:J2ME

為什麼需要 J2ME 浮點庫?

早期 CLDC 1.0 裝置普遍缺乏硬體浮點運算單元 (FPU),Java 原生 float/double 不被支援。雖有 MathFP 定點庫,但需手動管理定點轉換細節,易出錯。Henson Float 提供 完整封裝的 Float 類別,API 設計貼近 J2SE java.lang.Float,極大降低使用門檻。

henson.midp.Float (CLDC 1.0 適用)

下載:https://henson.newmail.ru/J2ME/Float.java

核心特性

  • 64-bit 尾數 + 64-bit 指數,數值範圍極大
  • API 與 J2SE Float 高度相容
  • 涵蓋科學運算常用函數:三角、指數、對數、冪次、雙曲線等

完整 API 速查

建構子實例方法靜態方法/常數
Float()toString()ERROR
Float(long value)Add(Float)ZERO
Float(long value, long exp)Sub(Float)ONE
Float(Float value)Mul(long/Float)PI
Div(long/Float)E
Great/Less/Equal(Float)LOG10
Neg()LOGdiv2
toLong()PIdiv2/4/6/12
isError()PImul2/4
sin/cos/tan/sqrt
asin/acos/atan/atan2
parse(String, radix)
exp/log/log10/pow
ceil/floor/abs/Int/Frac
toRadians/toDegrees

使用方式

將 Float.java 直接加入專案原始碼目錄,即可像使用普通類別一樣使用:

import henson.midp.Float;

Float a = new Float(3.14);
Float b = new Float(2.71);
Float c = a.Add(b);
Float s = Float.sin(a);

henson.midp.Float11 (CLDC 1.1 擴充)

下載:https://henson.newmail.ru/J2ME/Float11.java

CLDC 1.1 原生支援 float/double,但缺少數學函數。Float11 補齊 java.lang.Math 缺失的 double 版本:

補充靜態方法

double asin(double x)
double acos(double x)
double atan(double x)
double atan2(double y, double x)
double exp(double x)
double log(double x)
double log10(double x)
double pow(double x, double y)

補充常數

double SQRT3
double LOG10
double LOGdiv2

授權與適用場景

  • License:同 Float 類別
  • 適用:科學計算類應用、物理引擎、遊戲軌跡計算、導航算法等需大量浮點運算的 MIDP 專案
  • 效能:純軟體實現,較硬體 FPU 慢,但在無 FPU 裝置上為唯一可行方案
對於非密集浮點運算場景,Henson Float 的封裝優雅度遠優於手動定點運算;若極度追求效能且能接受定點複雜度,可考慮 MathFP。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved