在VB.NET中选择大小写



用于以下代码

Dim mark As Integer
mark = InputBox("please enter your grade")
Select Case mark
Case < 50
MsgBox("fail")
Case 50 To 64
MsgBox("pass")
Case 65 To 74
MsgBox("good")
Case 75 To 84
MsgBox("very good")
Case 85 To 1000
MsgBox("excellent")
End Select

我有意把分数定义为整数。那么,为什么当等级为49.5时,它输出失败(这意味着等级已四舍五入到最低整数(?而另一方面,当等级为64.5时,它输出"通过",这意味着等级已四舍五入到最高整数?

如果64.5给出"pass",它没有像你说的那样四舍五入到高位,这意味着它将达到64(pass是从50到64,所以这是有意义的(

现在关于舍入,你可以使用Decimal。Round,它将数字、你想要的小数位数(在你的情况下是0小数(和舍入的模式作为参数

你应该使用十进制var,但如果你坚持使用integer,只需将decimal.Round的结果转换为int

不要猜测VB的自动转换在做什么。相反,请将Option Strict设置为On,然后自己执行转换。

Dim input As String = InputBox("please enter your grade")
Dim grade As Decimal
If Decimal.TryParse(input, grade) Then
' Now we know that the input is a valid decimal number.
' Here we control explicitly how we want to convert it to an Integer:
Dim mark As Integer = CInt(Math.Round(grade, MidpointRounding.AwayFromZero))
Select Case mark
Case < 50
MsgBox("fail")
Case 50 To 64
MsgBox("pass")
Case 65 To 74
MsgBox("good")
Case 75 To 84
MsgBox("very good")
Case 85 To 1000
MsgBox("excellent")
End Select
End If

此外,与Double不同,Decimal不将49.5的输入转换为类似于49.4999999999999999的东西。

最新更新