"JAVA无线开发之定点库MathFP使用入门" 在Java无线开发中,特别是针对J2ME环境,由于CLDC1.0规范不支持浮点运算,这给需要进行小数运算的应用带来了一定的挑战。大部分老旧的手机设备遵循的是CLDC1.0配置,而CLDC1.1才引入了对浮点运算的支持。为了解决这个问题,开发者可以选择使用像MathFP这样的定点库来进行小数运算。 MathFP是一个高效且小巧的库,特别适合在资源有限的J2ME平台上进行浮点运算。它通过整数模拟定点小数,提供了稳定、快速的计算能力,是进行小数运算的理想选择。MathFP的下载地址是http://home.rochester.rr.com/ohommes/MathFP,提供的是基于CLDC的1.1.2版本。开发时,可以将MathFP.class文件加入classpath,或者反编译获取源码直接整合到项目中。 使用MathFP时,需要注意的是,尽管内部存储的是整数,但这些整数代表的是定点小数,因此在编程时应将其与普通整数区分开来。为了便于识别,可以将表示定点小数的变量名以"FP"作为后缀。进行运算时,需先将整数转换为定点小数,完成运算后再转回整数使用。 以下是一个简单的示例,展示了如何在J2ME的Canvas上,每100毫秒让一个点按照60度角向东北方向移动5个像素,从而描绘出点的运动轨迹。这个例子中,需要用到小数和三角函数。代码片段如下: ```java import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import net.jscience.util.MathFP; / 小数运算演示Canvas */ public class DecimalOperationCanvas extends Canvas { private int xFP, yFP; public DecimalOperationCanvas() { xFP = 0; yFP = 0; } protected void paint(Graphics g) { g.setColor(0xFFFFFF); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(0x000000); g.drawPoint(xFP << MathFP.FP_SHIFT, yFP << MathFP.FP_SHIFT); } protected void keyPressed(int key) { if (key == Canvas.KEY_NUM5) { // 将角度转换为弧度并计算坐标增量 double angleRad = MathFP.toRadians(MathFP.FPValue(60)); int deltaXFP = (int) MathFP.round(MathFP.cos(angleRad) * 5); int deltaYFP = (int) MathFP.round(MathFP.sin(angleRad) * 5); // 更新点的位置 xFP += deltaXFP; yFP += deltaYFP; // 重绘Canvas repaint(); } } } ``` 在这个示例中,`xFP`和`yFP`是表示定点小数的整数变量,`MathFP.FP_SHIFT`用于确定定点小数的精度。`MathFP.toRadians`和`MathFP.cos`、`MathFP.sin`等方法用于进行角度转换和三角运算。`MathFP.round`则用于将定点小数转换为整数,确保位置的更新。每次按键事件触发时,点的位置会根据设定的角度和速度更新,并在Canvas上重新绘制,显示运动轨迹。 MathFP库为CLDC1.0环境下的Java无线开发提供了必要的浮点运算能力,其小巧的体积和高效的运算使得它成为J2ME开发者的得力工具。理解和熟练运用MathFP,能够帮助开发者在有限的资源条件下实现复杂的数学计算,提升应用程序的功能和性能。
下载后可阅读完整内容,剩余4页未读,立即下载
- 粉丝: 2
- 资源: 909
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦