![]() |
#2
mayuebo2012-02-18 18:26
|
引用网上找来的一段话:
Double 数据类型提供数字可能的最大和最小量值。
Double 的默认值为 0。
编程提示
精度。在处理浮点数字时,请记住浮点数在内存中并不总是有精确的表示形式。 对于某些操作(例如值比较和 Mod 运算符),这可能导致意外的结果。
尾随零。浮点数据类型没有尾随零字符的任何内部表示形式。 例如,它们不能区别 4.2000 和 4.2。 因此,在显示或输出浮点值时,尾随零字符不会出现。
类型字符。将文本类型字符 R 追加到文本会将其强制转换成 Double 数据类型。 例如,如果一个整数值后跟 R,则该值会更改为 Double。
下面是我的代码以及程序计算结果和网上试用版的程序计算结果的对比:

[color=#0000FF]Dim k0 As Double
Dim k1 As Double
Dim pt As Double
Dim p15 As Double
Dim p155 As Double
Dim a As Double
Dim p As Double
Dim t1 As Double ''''''''''''''''''''''视温
Dim vcf15 As Double
If p <= 770 And p >= 653 Then
k0 = 346.4228
k1 = 0.4388
pt = p * (1 - 2.3 * 10 ^ (-5) * (t1 - 20) - 2 * 10 ^ (-8) * (t1 - 20) * (t1 - 20))
p15 = pt
Do
p155 = p15
a = k0 / (p155 * p155) + k1 / p155
vcf15 = Exp(-a * (t1 - 15) * (1 + a * (t1 - 15) * 0.8))
p15 = pt / vcf15
Loop Until Abs(p15 - p155) < 0.005
[/color]
Dim k1 As Double
Dim pt As Double
Dim p15 As Double
Dim p155 As Double
Dim a As Double
Dim p As Double
Dim t1 As Double ''''''''''''''''''''''视温
Dim vcf15 As Double
If p <= 770 And p >= 653 Then
k0 = 346.4228
k1 = 0.4388
pt = p * (1 - 2.3 * 10 ^ (-5) * (t1 - 20) - 2 * 10 ^ (-8) * (t1 - 20) * (t1 - 20))
p15 = pt
Do
p155 = p15
a = k0 / (p155 * p155) + k1 / p155
vcf15 = Exp(-a * (t1 - 15) * (1 + a * (t1 - 15) * 0.8))
p15 = pt / vcf15
Loop Until Abs(p15 - p155) < 0.005
[/color]
代码在计算40℃以下视温时,没有一点错误。但是当视温过高时,计算结果就出现错误,为什么我的计算结果就会不正确呢。
我的计算结果如下:
只有本站会员才能查看附件,请 登录
网上下载的试用版的计算结果如下:
只有本站会员才能查看附件,请 登录
我的计算结果如下:
只有本站会员才能查看附件,请 登录
网上下载的试用版的计算结果如下:
只有本站会员才能查看附件,请 登录
[ 本帖最后由 lzxagy 于 2012-2-21 18:00 编辑 ]