各位来看个VB计算问题(问题不大,有合适答案追加)

来源:百度知道 编辑:UC知道 时间:2024/06/19 22:12:31
f1 = h2 * b2
r2 = ((b1 - b2) ^ 2 + h2 ^ 2) / 4 / (b1 - b2)
f2 = r1 ^ 2 * 157 * Atn(0.5 * b2 / Sqr(r1 ^ 2 - 0.25 * b2 ^ 2)) / 4500 - b2 * Sqr(r1 ^ 2 - 0.25 * b2 ^ 2)
f4 = r2 ^ 2 * 157 * Atn((h2 * (b1 - b2)) / h2 ^ 2 - 0.5 * (b1 - b2) ^ 2) / 4500 - h2 ^ 3 / 4 / (b1 - b2) + (b1 - b2) * h2 / 4
s = f1 + f2 + f4
s = Fix(s * 100000) / 100000
输入数据:
r1=35 b2=60 b1=64 h2=6 h1=40
定义变量:h1 h2 r1 r2 b1 b2 s f1 f2 f4什么的均为double
按照笔算结果s应为1817.2598…,f1 f2 f4应均为正数,
可是VB计算结果s是负值……为什么?哪里有问题?

f1= 360
r2= 3.25
f2=-1037.65728547895
f4=-8.02891641810655
s=-685.686201897054
s=-685.6862
表达式太长了难免手误
因为不知道你的意图,所以无法帮你核对代码
上面的6个结果是你运算过程上debug.print出来的
你用笔算一行一行的算,一个结果一个结果对照,就知道是哪行错了
然后认真检查错的那行表达式到底是错在哪里

r2 = ((b1 - b2) ^ 2 + h2 ^ 2) / 4 / (b1 - b2)
有这种算法吗?
改为r2 = ((b1 - b2) ^ 2 + h2 ^ 2) / (4 * (b1 - b2))
可能会好点吧.