Vb.net numericupdown显示错误的值
我使用数值上下设置最小值=0最大值=59,增量=1 当我在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
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