为什么除(+)运算符在VB.NET和C#中表现不同?

如果您在C#和VB.NET中创建新项目,则直接进入立即窗口并键入:

? 567 / 1000 

C#将返回0,而VB.NET将返回0.567。

要在C#中获得相同的结果,您需要输入

 ? 567 / 1000.0 

为什么会出现这种差异? 为什么C#在1000之后需要显式小数点?

整数操作数的 C#中的/运算符执行“整数除法”操作(相当于VB.NET中的\ _ 运算 符 )。 对于VB.NET,它是“正常”除法(将给出小数结果)。 在C#中,为了做到这一点,你必须明确地将至少一个操作数强制转换为浮点类型(例如double )。

因为在VB.NET中, /运算符被定义为返回浮点结果。 它将其输入扩大到double并执行除法。 在C#中,当两个输入都是整数时, /运算符执行整数除法。

请参阅MSDN for VB.NET 。

除以两个数字并返回浮点结果。

在执行除法之前,任何整数数字表达式都会扩展为Double。

有关C#的信息,请参阅MSDN。

除法运算符(/)将其第一个操作数除以第二个操作数。 所有数字类型都有预定义的除法运算

除以两个整数后,结果始终为整数。

要在VB.NET中获取与C#中整数上的/运算符相同的语义,请使用\运算符 。

除以两个数字并返回整数结果。

默认情况下,C#将576/1000视为整数除法,因此得到一个整数作为结果。

在VB.NET中,它将其视为浮点除法。

通过在C#中的数字上添加“.0”,您明确告诉它该数字是浮点数,因此除法也成为浮点数。

语言不同。 在C#中,编译器将这些数字解释为整数并使用整数除法。 在VB.NET中,编译器使用浮点除法。

C#语言参考

VB.Net语言参考

VB.Net有一个/和一个\运算符。 /碰巧是浮点除法运算符。