请问 vb6 double 溢出 该如何处理,有什么解决方案吗?

金融行业,在进行特征值和特征向量计算时,由于存在矩阵,会将非常大的数值进行相乘,所得的数值超出的Double类型的数值范围,出现了溢出。如下:dblResult=dblR... 金融行业,在进行特征值和特征向量计算时,由于存在矩阵,会将非常大的数值进行相乘,所得的数值超出的Double类型的数值范围,出现了溢出。
如下:
dblResult = dblResult + dblA * dblB
此时
dblResult = 3.93125218574443E+173
dblA = 2.14966375646259E+183
dblB = -2.88460287768951E+178

现在仅仅 dblA * dblB 已经就超出 Double 的数值范围了,溢出了。我自己查了一下也没有比Double 数值范围更广的数据类型了。

请大家想想办法 谢谢~~!
我之前试着去进行分解计算等一些方法,可是可实施性很差的。想不出什么方法了,才想到让大家一起帮个忙,看看该如何解决这样的问题。
谢谢大家!
回复:鬏灵燊
即使是 C# 中的 decimal,decimal 关键字表示 128 位数据类型。同浮点型相比,decimal 类型具有更高的精度和更小的范围,这使它适合于财务和货币计算。但是它的精度虽高,但是范围(±1.0 E-28 到 ±7.9 E+28)还是比 Double 的范围小很多。
*********************************************************************************************************************

Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308。Double 的类型声明字符是数字符号 (#)。
*********************************************************************************************************************

谢谢大家了,我在提问时也看过“高精度计算 ”及“大数字”相关的的算法,但是感觉比较复杂,的确问题很…………唉~~~
展开
 我来答
鬏靈燊
2010-08-11 · TA获得超过363个赞
知道小有建树答主
回答量:127
采纳率:0%
帮助的人:143万
展开全部
额,,,这个问题的确麻烦啊,建议使用c去编,c的灵活性很高,只是图形操作界面就不太好写了,或者你试试vb里的自定义类型,把多个double加在一个自定义类型里,不过这样运算又变麻烦了,哎,难啊
我查了下,在C#里有个decimal变量,是128位的变量,专门为财务设计的,但那不是vb的啊,的确有难度,先别关问题,我帮你找找办法

找到一个高精度计算,,,就是用编程的方法自己编写数据类型,再自己编写该类型的运算,不过这个实在很专业,恐怕不太现实,但也只有这个方法了,不过可能有人编过,所以,可以去找找相关代码

我建议还是得把数据分段存在多个数组里,再编写该数组的计算方法,目前也只有这个是最实际的,不知道楼主数学如何,这个也不是太难,稍微想想应该就可以

参考资料: http://baike.baidu.com/view/856859.html

yutao__
2010-08-07 · TA获得超过141个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:150万
展开全部
用高精度算法,但一般没有VB做的,大多数都用C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
firefox136
2010-08-08 · TA获得超过130个赞
知道答主
回答量:124
采纳率:28%
帮助的人:43.3万
展开全部
currency
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式