Vb.net numericupdown显示错误的值

Vb.net numericupdown显示错误的值,vb.net,Vb.net,我使用数值上下设置最小值=0最大值=59,增量=1 当我在 Private Sub Numericsec_ValueChanged(sender As Object, e As System.EventArgs) Handles Numericsec.ValueChanged unitsec = Convert.ToInt32(DirectCast(sender, NumericUpDown).Value Mod 10) tensec = Convert.ToInt32(Dir

我使用数值上下设置最小值=0最大值=59,增量=1 当我在

Private Sub Numericsec_ValueChanged(sender As Object, e As System.EventArgs) Handles Numericsec.ValueChanged

    unitsec = Convert.ToInt32(DirectCast(sender, NumericUpDown).Value Mod 10)
    tensec = Convert.ToInt32(DirectCast(sender, NumericUpDown).Value / 10)
当值为5时,则
单位秒=5
tensec=0
但当值为6时
单位秒=5
tensec=1°


谢谢

关于
NumericUpDown.Value
没有什么特别的;只是小数点。测试此代码并确认得到相同的结果。这可能只是理解所涉及的各种算术和转换的问题

测试代码:

Console.WriteLine($“Convert.ToInt32(5D Mod 10):{Convert.ToInt32(5D Mod 10)}”)
Console.WriteLine($“Convert.ToInt32(5D/10):{Convert.ToInt32(5D/10)}”)
Console.WriteLine($“Convert.ToInt32(6D Mod 10):{Convert.ToInt32(6D Mod 10)}”)
Console.WriteLine($“Convert.ToInt32(6D/10):{Convert.ToInt32(6D/10)}”)
Console.WriteLine($“Convert.ToInt32(6D)\10:{Convert.ToInt32(6D)\10}”)
Console.WriteLine($“Convert.ToInt32(5D)\10:{Convert.ToInt32(5D)\10}”)
输出:

转换为32(5D模式10):5
转换为32(5D/10):0
转换为32(6D模式10):6
转换为32(6D/10):1
转换为32(6D)\10:0
转换.ToInt32(5D)\10:0

说明:
5D Mod 10:这里没有秘密。5模10等于5。转换不起任何作用
5D/10
6D Mod 10:同样,这里没有秘密
6D/10:这里可能会让人困惑,因为现在你有了0.6,它被四舍五入到最接近的整数。中点舍入到0不适用,因为它是>中点。

5D\10、6D\10:丢弃小数。两者的结果都是0。

,如果您编写
Dim tensec=Convert.ToInt32(6/10)
,结果是什么?如果改为编写
Dim tensec=Convert.ToInt32(6\10)
?(不要责怪糟糕的数字向上向下)使用
\10
进行整数除法,不需要
转换。ToInt32
@Slai true,但数字向上向下。值是
十进制
,您无论如何都需要某种转换,因为\需要两个
,但当值是6时。。。单位秒=5
我不这么认为。再查一遍。它基本上是
Convert.ToInt32(6D Mod 10)
,不可能是5tensec=Convert.ToInt32(6\10)=1