VB.NET中除/
和\
之间有什么区别?
根据我使用的代码,我的代码给出了非常不同的答案。我以前见过这两个,但我从来不知道它们的区别。
答案 0 :(得分:19)
分割数字有两种方法。快速的方式和缓慢的方式。许多编译器都试图欺骗你快速完成它。 C#就是其中之一,试试这个:
using System;
class Program {
static void Main(string[] args) {
Console.WriteLine(1 / 2);
Console.ReadLine();
}
}
输出:0
你对这个结果感到满意吗?当表达式的左侧和右侧是整数时,它在技术上是正确的,记录的行为。这会做一个快速整数除法。处理器上的IDIV指令,而不是(臭名昭着的)FDIV指令。也完全符合所有大括号语言的工作方式。但绝对是SO的“wtf发生”问题的主要来源。为了获得愉快的结果,你必须做这样的事情:
Console.WriteLine(1.0 / 2);
输出:0.5
左侧现在是双重的,迫使浮点除法。根据计算器显示的结果。调用FDIV的其他方法是将右侧设为浮点数,或者将其中一个操作数显式地转换为(double)。
VB.NET不起作用,/运算符总是一个浮点除法,无论类型如何。有时你真的做想要整数除法。这就是\
的作用。
答案 1 :(得分:10)
10 / 3 = 3.333
10 \ 3 = 3 (the remainder is ignored)
答案 2 :(得分:5)
/ Division
\ Integer Division
答案 3 :(得分:1)
10 / 3 = 3.33333333333333, assigned to integer = 3
10 \ 3 = 3, assigned to integer = 3
20 / 3 = 6.66666666666667, assigned to integer = 7
20 \ 3 = 6, assigned to integer = 6
以上代码:
Dim a, b, c, d As Integer
a = 10 / 3
b = 10 \ 3
c = 20 / 3
d = 20 \ 3
Debug.WriteLine("10 / 3 = " & 10 / 3 & ", assigned to integer = " & a)
Debug.WriteLine("10 \ 3 = " & 10 \ 3 & ", assigned to integer = " & b)
Debug.WriteLine("20 / 3 = " & 20 / 3 & ", assigned to integer = " & c)
Debug.WriteLine("20 \ 3 = " & 20 \ 3 & ", assigned to integer = " & d)