Ответ 1
Существует два способа разделить числа. Быстрый путь и медленный путь. Многие компиляторы пытаются обмануть вас в этом быстро. С# - один из них, попробуйте следующее:
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 - это сделать правую часть числа с плавающей запятой или явно лить один из операндов в (double).
VB.NET не работает таким образом, оператор / всегда - деление с плавающей запятой, независимо от типов. Иногда вам действительно требуется целочисленное деление. То, что делает \
.