码迷,mamicode.com
首页 > 其他好文 > 详细

利用科学计数法初始化double型来处理大数的显示

时间:2015-04-09 19:26:20      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:

最近做一款挂机游戏,碰到了一个问题,游戏中玩家攻击力会不断增加,从K增加到M到B到T,然后aa,bb,cc……

这样就出现了一个问题,我该如何存储玩家的攻击力,乍看之下double型的长度好像也不够了。

我最开始想到的方法是把数值和单位分开,设计一个新的类型来处理,但发现使用起来非常不方便,除非实现大量的功能。

后来找到了一个比较好的办法——用科学计数法来初始化double。

假设玩家当前攻击力是1.08 * 10 ^ 120, 如果试图通过下面这种方式来初始化,使用时就会发现CurrentDps是infinite

double CurrentDps = 1.08f * math.pow(10, 120); (错误)

但是使用下面这种方式就没问题了

double CurrentDps = 1.08E+120; (正确)

而且这样初始化后的CurrentDps是可以正确的和其他科学技术法表示的double进行运算的,这样一来问题就解决了,无论攻击力在什么量级,都使用科学技术法来初始化和运算,最后显示到屏幕上的时候,再通过自己写的一个方法,转换成当前数值你希望显示的单位。

另外有一点要注意,由于double型本身能表示的最大范围是E308,所以如果你的数值会超过这个值,那么这个方法也就不适用了,只能想别的办法来解决了。

 

利用科学计数法初始化double型来处理大数的显示

标签:

原文地址:http://www.cnblogs.com/Hypnus/p/4410409.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!