注册 登录
编程论坛 VB6论坛

合格与不合格判断问题

sncelpl 发布于 2022-04-24 10:46, 2919 次点击
If Text4.Text >= "2%" Or Text8 >= "2%" Or Text12 >= "2%" Or Text16 >= "2%" Or Text20 >= "2%" Then
Text51.Text = "不合格"
Else
Text51.Text = "合格"
End If
超过9%就不对了。10%显示是合格。请问是怎么回事?没有%就正常
17 回复
#2
风吹过b2022-04-24 13:00
字符串的问题,仔细看一下书上的字符串如何比较大小的说明吧

按ASCII码来比较,从第一字符开始比较,如果相同,继续比较下一个字符,直到发现不相同 或到字符串最后为止。
#3
sncelpl2022-04-24 18:21
能给个代码吗?
#4
yuma2022-04-24 21:18
我猜楼主想要的一定是数字比大小

首先,TextBox控件中的内容是字符串不是数字,我们可以限制TextBox中的输入,让其只能输入数字

然后 TextBox控件中的内容,转换成数字再进行比较即可。
#5
sncelpl2022-04-25 07:41
是数字但有%号我取消%号就正常了。
#6
sncelpl2022-04-25 08:30
找到原因了应该是小数的原因。谁能给个有小数的对比代码?谢谢
#7
cwa99582022-04-25 08:40
vb是不认识% 百分号 这个符号的。
%在vb里是数据类型的作用,代表的是整型。
如果是数值类型,建议:
val(text4)转换为数值类型再比较。
#8
apull2022-04-25 08:50
程序代码:

Private Sub Command1_Click()
    s = Text1.Text
    nums = Left(s, Len(s) - 1)
    If Right(s, 1) = "%" And IsNumeric(nums) Then
        V = Val(nums)
    End If
    MsgBox V * 2
End Sub

#9
sncelpl2022-04-25 09:05
只有本站会员才能查看附件,请 登录

Private Sub Command7_Click()
Call Command1_Click
Call Command2_Click
Call Command3_Click
Call Command4_Click
Call Command5_Click
Call Command6_Click
a = Text4.Text
b = Text8.Text
c = Text12.Text
d = Text16.Text
e = Text20.Text
If a >= "2%" And b >= "2%" And c >= "2%" And d >= "2%" And e >= "2%" Then
Text51.Text = "不合格"
Else
Text51.Text = "合格"
End If
If Text24 >= "4%" Then
Text52.Text = "不合格"
Else
Text52.Text = "合格"
End If
End Sub
还是一样有问题超过10%判断就不对了
#10
cwa99582022-04-25 09:10
你的文本框里输入的是什么数据?有%的吗?运行的时候截图看看

#11
sncelpl2022-04-25 09:23
text4,8,12,16,20 运行结果就有%号
#12
q36989952022-04-25 10:28
回复 楼主 sncelpl
目测是文本格式问题,请把"2%" 改成0.02试试
#13
sncelpl2022-04-25 11:26
我把判断条件反过来写好是正常了
不知对不对
a = Text4.Text
b = Text8.Text
c = Text12.Text
d = Text16.Text
e = Text20.Text
If a <= "2%" And b <= "2%" And c <= "2%" And d <= "2%" And e <= "2%" Then
Text51 = "合格"
Else
Text51 = "不合格"
End If
If Text24 <= "4%" Then
Text52 = "合格"
Else
Text52 = "不合格"
End If
If a <= "10%" And b <= "10%" And c <= "10%" And d <= "10%" And e <= "10%" Then
Text51 = "合格"
Else
Text51 = "不合格"
End If
If Text24 <= "10%" Then
Text52 = "合格"
Else
Text52 = "不合格"
End If
#14
cwa99582022-04-25 15:56
要用数值比较,不要用字符串来比较!

dim a as single,b as single,c as single,d single,e as single
a = val(Text4.Text)
b = VAL(Text8.Text)
c = VAL(Text12.Text)
d = VAL(Text16.Text)
e = VAL(Text20.Text)
If a >= 2 And b >= 2 And c >= 2 And d >= 2 And e >= 2 Then
Text51.Text = "不合格"
Else
Text51.Text = "合格"
End If
If Text24 >= 4 Then
Text52.Text = "不合格"
Else
Text52.Text = "合格"
End If
End Sub
#15
sncelpl2022-04-25 16:11
回复 14楼 cwa9958
要报错数据类型不匹配a,b,c,d,e文件框里有%号

[此贴子已经被作者于2022-4-25 16:19编辑过]

#16
yuma2022-04-25 18:44
以下是引用cwa9958在2022-4-25 08:40:33的发言:

vb是不认识% 百分号 这个符号的。
%在vb里是数据类型的作用,代表的是整型。
如果是数值类型,建议:
val(text4)转换为数值类型再比较。


下面是两个百分数的加法运算,想要比较大小不是很容易的事?

程序代码:
Private Sub Form_Load()
Dim a As Single, b As Single
a = Format("13.54%", "0.00####")
b = Format("12.34%", "0.00####")
c = a + b
Debug.Print c
MsgBox Format(c, "0.00%")
End Sub
#17
cwa99582022-04-28 09:38
回复 15楼 sncelpl
N那你只要不在文本框里输入%就是了。

或者,你按照16楼的格式转换一下数据也一样。
用数值比较是不会出错的。
字符串比较不好的。
比如:"9" 比"100"大。除非补足位数,比如"009"

[此贴子已经被作者于2022-4-28 10:03编辑过]

#18
独木星空2022-04-29 21:19
回复 楼主 sncelpl
大家讨论的挺热闹,由于最近时间紧迫,顾不上这些了,忙完了,一定静下心来,好好补一补。
1