众所周知,cldc1.0是不支持小数运算的,而cldc1.1才支持浮点运算。但是目前市面上的手机,绝大部分是采用cldc1.0这种configuration。那我们需要进行小数运算怎么办呢?比如说要绘制任意角度的飞机运行轨迹。
【相关文章:Java技巧:用Java获得IP地址】 【扩展阅读:Jave基础学习:jdbc小技巧】你当然可以自己写一个类,用整数来模拟定点小数运算(模拟浮点小数运算非常困难),不过你不必重新发明轮子,网上有很多用整数运算来模拟小数运算的代码库,而mathfp就是其中非常优秀的一个,它健壮,稳定,高速,是在j2me环境中进行小数运算的不二之选,而且最关键的是,它的体积很小。mathfp的下载地址是:http://home.rochester.rr.com/ohommes/mathfp。 【扩展信息:Java企业应用系统框架的比较与选择(1】 我下载的版本是基于cldc的,下载的mathfp版本号是1.1.2.下载回来的全部东西就是一个mathfp.class(该类所在的包名是net.jscience.util),你可以把该类置于你的classpath中进行开发,发布软件的时候把该class加入到jar文件中。 或者你也可以把该class反编译,得到源码,直接放入你的工程的src目录中,我这里采用的是后一种做法。记得同时把mathfp的api文档下载回来。因为mathfp是用整数来模拟定点小数的,所以小数的内部表现形式还是一个整数,但是你一定要记得把表示小数的整数与真正的整数区别开来,否则就会造成很多难于调试的bug(一个小技巧就是表示小数的整形变量名以fp为后缀)。你只需要掌握一个原则,就是首先把要参与小数运算的整数都转换成小数,然后进行小数运算,运算完了以后,再把结果转换成成整数使用。 下面的这个例子,就是用来演示mathfp的基本使用方法的。假定屏幕左下角有一个点,每隔100毫秒,就沿60度的角度向东北方向运动5个像素,绘制出此点的运动轨迹。这个例子涉及到小数与三角运算,因为该点x坐标的增量是cos60(度),y坐标上的增量是-sin60(度)。我们来看代码怎么写: import javax.microedition.lcdui.canvas; import javax.microedition.lcdui.graphics; import net.jscience.util.mathfp; /** * 小数运算演示canvas * @author jagie * */ public class floatcanvas extends canvas implements runnable { //用于统计屏幕刷新次数 int paintcount; //屏幕宽度,高度。定点数 ... 下一页