代码之家  ›  专栏  ›  技术社区  ›  Fredou

为什么在vb.net和c中除法(/)运算符的行为不同?

  •  22
  • Fredou  · 技术社区  · 15 年前

    如果在c_和vb.net中创建新项目,则直接进入即时窗口并键入:

    ? 567 / 1000
    

    C将返回0,而vb.net将返回0.567。

    要在c中获得相同的结果,您需要键入

    ? 567 / 1000.0
    

    为什么会有这种差异?为什么c需要1000后的显式小数点?

    5 回复  |  直到 15 年前
        1
  •  33
  •   Mehrdad Afshari    15 年前

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

        2
  •  11
  •   jason    15 年前

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

    参见MSDN VB.NET .

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

    在执行除法之前,任何整数数值表达式都被加宽为double。

    参见MSDN C# .

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

    当你把两个整数分开时,结果总是一个整数。

    在vb.net中获得与 / 运算符,使用 \ operator .

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

        3
  •  3
  •   Paolo    15 年前

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

    在vb.net中,它将其视为浮点除法。

    通过在C中的数字上添加“.0”,您可以明确地告诉它这个数字是一个浮点数,因此除法也变成了浮点数。

        4
  •  2
  •   Scott Stanchfield    15 年前

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

        5
  •  2
  •   Benjamin Podszun    15 年前

    C# Language Reference

    VB.Net Language Reference

    vb.net同时具有a/和a\运算符。/恰好是浮点除法运算符。