Есть два способа деления чисел.Быстрый и медленный путь.Многие компиляторы пытаются заставить вас сделать это быстрым способом.C # - один из них, попробуйте это:
using System;
class Program {
static void Main(string[] args) {
Console.WriteLine(1 / 2);
Console.ReadLine();
}
}
Вывод: 0
Довольны ли вы таким результатом?Это технически правильное, документированное поведение, когда левая и правая части выражения являются целыми числами.Это делает быстрое целочисленное деление .Инструкция IDIV на процессоре вместо (печально известной) инструкции FDIV.Также полностью согласуется с тем, как работают все языки фигурных скобок.Но, безусловно, основной источник вопросов о "wtf случившемся" в SO.Чтобы получить счастливый результат, вы должны сделать что-то вроде этого:
Console.WriteLine(1.0 / 2);
Выход: 0.5
Левая сторона теперь двойная, что вызывает деление с плавающей запятой.С видом результата показывает ваш калькулятор.Другие способы вызвать FDIV - сделать число справа с плавающей запятой или явно привести один из операндов к (удвоению).
VB.NET не работает таким образом, оператор / является всегда деление с плавающей запятой, независимо от типов.Иногда вы действительно хотите хотите целочисленное деление.Вот что делает \
.