整数给出错误的划分

时间:2014-06-14 20:54:59

标签: vb.net vb.net-2010

我正在编写这个学校的分配,说要将一个数字转换为文本

Ex:20应该在这个程序中查看==> 20

我遇到了这个问题

Dim num,y As Integer

 num = 26

 y = num / 10

结果是2.6但是因为它的整数。

结果应该是y

是" 2"但相反,股票" 3"

我对C ++没有任何问题

请有人解释问题以及如何解决问题 提前谢谢你

1 个答案:

答案 0 :(得分:2)

来自MSDN VB.Net Operators

  

使用\ Operator(Visual Basic)执行整数除法。   整数除法返回商,即整数   代表除数可以分成的次数   股息,不考虑任何余额。除数和   红利必须是整数类型(SByte,Byte,Short,UShort,   此运算符的整数,UInteger,Long和ULong)。所有其他类型   必须首先转换为整数类型。

/ Operator

  

除以两个数字并返回浮点结果。   在执行除法之前,任何整数数字表达式都是   扩大到双倍。如果将结果分配给整数数据类型,   Visual Basic尝试将结果从Double转换为该类型。

所以

y = num / 10  = 3 
y = num \ 10  = 2

查看IL汇编

Sub Main
    Dim num as Integer = 26
    Dim result as integer  = num / 10
    Console.WriteLine(result)
End Sub

IL_0000:  ldc.i4.s    1A 
IL_0002:  stloc.0     // num
IL_0003:  ldloc.0     // num
IL_0004:  conv.r8     
IL_0005:  ldc.r8      00 00 00 00 00 00 24 40 
IL_000E:  div         
IL_000F:  call        System.Math.Round
IL_0014:  conv.ovf.i4 
IL_0015:  stloc.1     // result
IL_0016:  ldloc.1     // result
IL_0017:  call        System.Console.WriteLine

您可以轻松发现对System.Math.Round的调用以及将浮点除法的返回值转换为整数