在J2ME中模拟浮点运算

众所周知,CLDC1.0不支持浮点数,即不支持float和double两种基本数据类型,但是在程序中,我们经常需要使用一些浮点数来进行运算。这个时候你可以使用MathFP浮点数库,但是有些时候我们做的工作很简单,对于结果的要求也不精确,这个时候,我们就可以使用以下方法来模拟浮点运算。

模拟浮点运算的原理其实很简单,就是先将需要运算的数字扩大10的整数次方倍然后进行运算。

例如,你需要计算一个圆的周长,假设圆的半径为6,则圆的周长应该为2 * 6 * 3.14,而CLDC1.0中没有浮点数,使用数字3来代替3.14误差又比较大,则可以这样来处理:

(2 * 6 * 314) / 100

即先将需要运算的浮点数,如3.14扩大100倍,然后在运算结束时再除以100即可。

如下是简单的实现代码:

//计算圆周长

int r = 6;
int pi = 314;
int l = 0;
l = (2 * 6 * 314)/100;

则变量l就是近似的圆周长。

注意,上面的计算使用的是数学上的去1法,即不管小数部分是多少都舍去。如果想更加精确一些(当然还是不够准确),可以再使用四舍五入,这样上面的代码可以修改为:

//计算圆周长
int r = 6;
int pi = 314;
int l = 0;
l = (2 * 6 * 314 + 50)/100;

这里在运算结果的基础上加上50就实现了四舍五入,如果你的小数后面是3位,则需要加上500,依次类推。

这样,通过上面的方式,可以实现近似的浮点运算,虽然不是很准确,但是还是可以适用一些要求不高的场合。

当然,随着CLDC1.1的普及,将为J2ME带来float和double这两种数据类型,那个时候就不需要这些内容了。

时间: 2024-10-03 19:54:19

在J2ME中模拟浮点运算的相关文章

J2ME中多线程网络连接编程的分析

编程|多线程|网络 摘 要 介绍并分析了J2ME的通用网络连接框架(GCF),并以此为基础,指出了在J2ME网络连接编程中存在的问题,并提出了通过构建多线程的两种解决方法. 关键词 J2ME GCF多线程 网络连接 引言 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE.J2EE并称.J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话.可视电话.数字机顶盒和汽车导航系统等等.即J2ME是为消费电子产品和手持设备量身定制的

浅析J2ME中多线程网络连接编程

引言 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE.J2EE并 称.J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂 窝电话.可视电话.数字机顶盒和汽车导航系统等等.即J2ME是为消费电子产品 和手持设备量身定制的Java专用版本. J2ME的出现使开发跨平台的消费类电子产品的应用软件成为可能.Java语言 的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程 序.它提供了基于HTTP的高级Intern

如何使用J2ME中的线程

线程在J2ME开发中是不可或缺的一部分,J2ME继承了J2SE中关于java.lang中的Runnable接口,以及Thread类.但是,由于J2ME应用的特殊性,J2ME程序中去除了部分API,没有线程组的概念,也没有daemon线程. 今天,我们从一个例子出发,来学习J2ME当中的线程的概念.我们选取的例子是俄罗斯方块.首先,有一些要注意的事项: 1.注意一点,要注意在J2me中不要使用浮点数,这样可以通过编译,但是不能通过预验证.因为一般手持设备都无法负担浮点运算的高负荷. 2.在J2ME

J2ME中的时间处理全攻略

攻略 时间处理在程序开发中相当常见,下面对于时间处理做一个简单的说明. 一.时间的表达方式时间在J2ME中有两种表达方式:1. 以和GMT1970年1月1号午夜12点和现在相差的毫秒数来代表这种方式适合比较两个时间之间的差值.2.  以对象的形式来表达二.时间处理的相关类时间处理在J2ME中涉及三个类:1.  System类long time = System. currentTimeMillis();使用该方法可以获得当前时间,时间的表达方式为上面提到的第一种. 2.  Date类Date d

J2ME中文教程之J2ME技术概述

教程|中文 随着移动通信的突飞猛进,移动开发这个新鲜的字眼慢慢成为开发者关注的热点.在网上进行的最近一份调查显示,有24.34%的受访者涉足嵌入式/移动设备应用开发,这个数字可能略高于实际的比例,但也足可说明嵌入式/移动设备应用开发是一块诱人的新鲜奶酪.J2ME(Java 2 Micro Edition)是嵌入式/移动应用平台的王者,Linux和WinCE分列二.三位.Nokia等厂商力推的Symbian平台目前开发者占有率尚未达到满意水平,考虑到调查项合并了嵌入式设备(例如PDA)和移动设备(

J2ME中暂时无法完成的功能

J2ME中暂时无法完成的功能 作者:陈跃峰 出自:http://blog.csdn.net/mailbomb          列一些J2ME中暂时无法完成的功能,希望大家能积极补充: 1.  在手机中不更改代码实现移植,主要指游戏. 2.  动态修改按钮文字. 3.  在Canvas上接受中文输入. 4.  操作本地资源.例如地址本.已收短信息等. 5.  制作破坏性的手机病毒. 6.  其他等待大家来补充.

J2ME中RMS的使用解析

在J2ME中,RMS作为唯一的永久性存储工具,其重要性是不言而喻的.但是很多刚刚开始学习J2ME的新人总是抱怨在这方面的资料很少,或者是针对性不强.因此,我想把自己在这方面的一些学习心得和大家交流一下. RMS即Record Manager System,在手机应用中常常作为得分记录.游戏信息存储等的工具使用. RMS的使用可以分为两个部分:一.单一记录的构造:二.RecordStore的使用和操作.下面就这两方面进行详细说明. 一.单一记录的构造.我们在存储记录时可能需要记录很多相似的条目,在

J2ME中需要的Java基础知识

现在有大部分人,都是从零开始学J2ME的,学习J2ME的时候,总是从Java基础开始学习,而且现在讲Java基础的书籍中都是以J2SE来讲基础,这就给学习造成了一些不必要的麻烦,下面将J2ME中用到的和不需要的Java基础知识做一个简单的说明:        J2ME中使用到的Java基础知识: 1.  Java语法基础:包括基本数据类型.关键字.运算符等等 2.  面向对象的思想:类和对象的概念,继承和多态等等. 3.  异常处理 4.  多线程 J2ME中没有用到的Java基础知识: 1. 

J2ME中随机数字处理全攻略

攻略|随机|随机数字 在程序中生成随机数字,用处比较,如人工智能领域等等,这里对于在J2ME中生成随机数的操作进行一个简单的整理,希望对大家能有帮助.       J2ME和J2SE不同,不能使用Math类的random来生成随机数字,只能使用java.util包的Random类来生成随机数字.       1.创建Random类型的对象:       Random random = new Random();Random random = new Random(10010010);以上两种是创