在VB.NET中划分

Cyc*_*one 15 vb.net division

VB.NET中的划分/\划分有什么区别?

根据我使用的代码,我的代码给出了非常不同的答案.我以前见过这两个,但我从来不知道其中的区别.

Han*_*ant 20

有两种方法来划分数字.快速的方式和缓慢的方式.许多编译器都试图欺骗你快速完成它.C#是其中之一,试试这个:

using System;

class Program {
    static void Main(string[] args) {
        Console.WriteLine(1 / 2);
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:0

你对这个结果感到满意吗?当表达式的左侧和右侧是整数时,它在技术上是正确的,记录的行为.这会进行快速整数除法.处理器上的IDIV指令,而不是(臭名昭着的)FDIV指令.也完全符合所有大括号语言的工作方式.但绝对是SO的"wtf发生"问题的主要来源.为了获得快乐的结果,你必须做这样的事情:

    Console.WriteLine(1.0 / 2);
Run Code Online (Sandbox Code Playgroud)

产量:0.5

左侧现在是双重的,迫使浮点除法.根据计算器显示的结果.调用FDIV的其他方法是将右侧设为浮点数,或者通过将其中一个操作数显式地转换为(double).

VB.NET不能以这种方式工作,/运算符始终是浮点除法,无论类型如何.有时候,你真的想的整数除法.这是什么\.


neo*_*862 11

10 / 3 = 3.333
10 \ 3 = 3 (the remainder is ignored)
Run Code Online (Sandbox Code Playgroud)