看此文前,你可以首先参考一下《J2ME中定点库MathFP使用入门》一文。MathFP是一个定点的浮点模拟工具,这套类库没有封装细节,而是把一系列的转换操作留给了用户,这些频繁的操作非常容易出错,但是效率上占一定的优势。考虑到极少有J2ME设备设有浮点运算单元,特别是在CLDC1.0设备上不适合使用沉重的浮点运算。所以如果你的应用需要进行沉重的浮点运算,比如基于浮点的游戏,可以采用MathFP。这样至少比你采用手动的乘除法来的优雅。而对于并非沉重的浮点计算,我推荐大家使用由_Nikolay Klimchuk_ 开发的henson.midp.Float库(ver 1.01) ,一个封装良好的Float类。
首先到http://henson.newmail.ru/j2me/Float.java下载源代码。
henson.midp.Float类非常适合科学计算,他的范围很大,具有64位的尾数(mantissa),64位的指数。该Float类和J2SE标准的Float类十分的相似,提供了完备的方法,参考下表:
非静态成员非静态成员常量Float()Float的使用和大多数提供源代码的第三方库一样,只要直接将其加入到你的工程中来就可以了。
Float类的license很特别,根据作者的要求,需要你做到以下几点:
也许你最关心这个模拟类的速度。以下是官方的测试数据供你参考。
测试程序下载地址:
http://henson.newmail.ru/j2me/FloatTest.jad
http://henson.newmail.ru/j2me/FloatTest.jar
/-/ Nokia
N-Gage1016594164112973438632842196310i43702461708953631467324131204023510i42022435683753241455022370166786100440725347065541014905237941606966104381251171585492150562387417318365010946091766129734847031464176507654531265103125155328*66003281575001885473235132862206086362310149832522395322382367076004942907956141578248216223100672739671094990542490536291262686230 (3.14)9655381654108832125165*6230 (4.28)70541411978572387366923786230i (3.23)62735199461917473813183072504254243170525466149432248314524761028114143818745327191109626028114140615745327661187663011063156942031094500/-/ Siemens
S5528899165595089936306101370200670169181M5530441170255358438420105500207800*SX1111067218751563398571414203CX658442583423274431219923S652121393372454661191798M75 (new)2671533092404201186790/-/ SonyEriCSSon
K300i (new)7393541094646171630412389K750i654319980521149628481970Z10107854041231886202632892603K700i7123701085639168730491864T61020580115753358528100713658774076280T610 (R3C)878050551451511385304404212034595T610 (R6C)987555751621012235332954941037920P90025010934415640622031062P800500282813625156332501750Thank you to Dmitry Gorilowsky for measurementsPDA/-/ Sony
Clie N61048830249608477035810102100445530206440
_Nikolay Klimchuk_ 还开发了一些相关工具让该Float的使用变得更加的简单。FloatConv是一个数学转换器,它将数学算数表达式转换为midp1.0平台上使用henson.midp.Float的等价表达式。这样使得使用henson.midp.Float的成本大大降低了。这一工具是基于J2SE 。
该工具的下载地址是:http://www.unteh.com/download/FloatConv/FloatConvW.zip
henson.midp.Float11 是对CLDC1.1的扩展。提供了CLDC1.1相对比J2SE缺失的浮点操作:
下载地址:http://henson.newmail.ru/j2me/Float11.java
henson.midp.Float11的license和henson.midp.Float是一样的。
另外一套功能相似的基于CLDC1.0的LIB是Beartronics Java J2ME Libraries的fpmathlib,地址 :http://sourceforge.net/PRojects/bearlib/,感兴趣的朋友可以自行研究。
(出处:http://www.VeVb.com)
新闻热点
疑难解答