作业帮 > 综合 > 作业

VB中exp的返回值为0

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/11 14:32:28
VB中exp的返回值为0
我想做这样一个表达式:
b=exp(a*10)
结果b=0,a定义为double.
请问如何修改?
Private Sub cmdOk_Click()
Dim uc As Double
r = Text1.Text
c = Text2.Text
l = Text3.Text
us = Text4.Text
delta = r * r * c * c - 4 * l * c
If delta > 0 Then
r1 = (-r * c + Sqr(delta)) / 2 / l / c
r2 = (-r * c - Sqr(delta)) / 2 / l / c
a1 = r2 * us / (r2 - r1)
a2 = -r1 * us / (r2 - r1)
uc = a1 * Exp(r1 * 10)
Label3.Caption = uc
输出uc为0
要有完整代码(至少也要有前后10多行代码)才能分析原因.否则就像“管中窥豹”,神仙也帮不了你.
再问: 详见问题补充
再答: 由于双精度浮点数(Double)的精度问题,当Exp()中的参数小于-744时,计算结果已经超出双精度浮点数所能表示的最小数值范围了,结果就会为0
因此,uc = a1 * Exp(r1 * 10) 如果r1的值小于-74.4,那么uc就会为0
再问: e的高次幂有更好的计算方法呢,不行的话只能用泰勒公式展开?
再答: 不管怎么计算,结果都要受电脑的限制的,当一个正数小于4.94065645841247E-324(这个数相当于小数点后面有323个0,然后是494....)时,电脑就只能用0来表示了。