Математические операторы
Из-за присутствия знака / в выделенной строке переменной fdeg присваивается результат типа Double. В режиме жесткой проверки типов это приводит к тому, что на стадии компиляции будет выдано следующее сообщение об ошибке:
Option Strict disallows implicit conversions from Double to Decimal.
Как исправить ошибку? Только не надо убирать команду Option Strict – это одно из лучших новшеств VB.NET, которое избавляет вас от злостного искажения типов. Лучше воспользуйтесь суффиксом @ или преобразуйте выражение (полностью или частично) к типу Decimal. Пример:
fdeg = ((CDec(9 / 5) * cdeg) + 32)
Поскольку результат деления преобразуется к типу Decimal, результат тоже относится к типу Decimal.
Остается лишь заметить, что в этом простом примере мы используем метод Write вместо WriteLine, чтобы предотвратить перевод строки после вывода текста. Кроме того, в реальной программе введенные данные следовало бы предварительно проанализировать, потому что пользователи часто ошибаются при вводе.
Наконец, вещественное деление в VB.NET соответствует стандарту IEEE, поэтому вместо ошибки деления на ноль теперь происходит нечто странное. Пример:
Sub Main() Dim getData As String Dim x, у As Double x = 4 У = 0 Console.WriteLine("What is 4/0 in VB.NET? " & x / y) Console.ReadLine() End Sub
Результат выглядит так:
What is 4/0 in VB.NET? Infinity
Результат деления 0/0 равен:
NaN (Not A Number, "не является числом").
В табл. 3.8 перечислены операторы, используемые только при делении чисел типа Integer и Long.
Таблица 3.8. Математические операторы целочисленного деления.
Оператор | Операция |
---|---|
\ | Целочисленное деление любых целых чисел |
Mod | Остаток от целочисленного деления |
Оператор \ игнорирует остаток от деления и возвращает результат типа Integer (если он относится к интервалу допустимых значений этого типа). Например, 7\3=21. Напомним, что оператор / дает результат типа Double; если вы хотите, чтобы частное относилось к типу Integer – воспользуйтесь оператором \ или функцией преобразования типа.
Оператор Mod дополняет оператор целочисленного деления и возвращает остаток от целочисленного деления. Например, 7 Mod 3 = 1. Если целые числа делятся без остатка, оператор Mod возвращает 0: 8 Mod 4 = 0.