WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章J2ME技术J2ME基础在J2ME中模拟浮点运算(不够精确)

在J2ME中模拟浮点运算(不够精确)
作者:陈跃峰  来源:CSDN  发布时间:2005-9-20 16:28:43

众所周知,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这两种数据类型,那个时候就不需要这些内容了。



本文引用通告地址: http://blog.csdn.net/Mailbomb/services/trackbacks/294617.aspx

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码