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

时间:2009-12-23 14:38:06

标签: c# vb.net

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

? 567 / 1000

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

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

? 567 / 1000.0

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

6 个答案:

答案 0 :(得分:34)

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

答案 1 :(得分:11)

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

请参阅MSDN了解VB.NET

  

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

     

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

请参阅MSDN了解C#

  

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

     

分割两个整数时,结果始终为整数。

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

  

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

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

C# Language Reference

VB.Net Language Reference

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

答案 5 :(得分:0)

VB.Net 中的 C#'s / equalant 是 \

C#.Net:

/ 运算符 将两个数字相除并返回一个整数结果。

VB.Net:

/ 运算符 将两个数字相除并返回浮点结果。

\ 运算符 将两个数字相除并返回一个整数结果。

相关问题