vb的计算

来源:百度知道 编辑:UC知道 时间:2024/06/10 04:39:04
………………………………
…………………………

BBM = Val(Trim(Text4.Text)): BRM = Val(Trim(Text5.Text))
FBM = Val(Trim(Text10.Text)): FRM = Val(Trim(Text11.Text))
BK = Val(Trim(Text23.Text)): FK = Val(Trim(Text22.Text))
BG = BBM - FBM
RG = BRM - FRM
BKR1 = (BBM + BK - BRM) * 1000: BKR2 = (FBM + FK - FRM) * 1000: BKRJ = Abs(BKR1 - BKR2)
If BKR1 > 3 Then
MsgBox "后视尺读数较差超限!" & BKR1 - 3 & "mm", vbCritical, "超限"
ElseIf BKR2 > 3 Then
MsgBox "前视尺读数较差超限!" & BKR2 - 3 & "mm", vbCritical, "超限"
ElseIf BKRJ > 5 Then
MsgBox "前后视尺较差超限!" & BKRJ - 5 & "mm", vbCritical, "超限"
End If
Text16.Text = BG: Text17.Text = RG: Text18.Text = BG - RG
Text6.Text = BKR1: Text12.Text = BKR2
<

如果你用的变量是单精度的,那么这样的误差是正常的,改成双精度的误差应该会更小一些,但不能保证没有误差,正确的方法是写代码时就要考虑这种误差,比如说,比较两个单精度变量X和Y,如果X和Y相等时判断为是真,那么就不能简单的If X = Y Then,而应该是If Abs(X - Y) < 0.0000001 Then,这里的0.0000001要根据具体情况而定。
这样代码会复杂一些,也会降低代码的效率,所以一般都不对单精度、双精度的变量进行相等的判断,一般都是进行大于、小于、大于等于、小于等于的判断。
以上是个人理解,如果不对,请指正。