Для операции вычитания в форме X-Y применяется расширение типов для выбора стандартной реализации. Тип результата операции совпадает с типом операндов (после их возможного расширения). Определены следующие стандартные реализации, все они вычисляют разность операндов:
Целочисленное вычитание определено для типов Integer, UInteger, Long и ULong. Если результатом операции является число, выходящее за границы представляемых значений результирующего типа, то возбуждается исключительная ситуация типа System.OverflowException.
Вещественное вычитание определено для типов Float и Double. Разность вычисляется по правилам IEEE 754. Следующая таблица определяет возможные комбинации значений операндов и соответствующие им результаты операции. В таблице x и y это ненулевые конечные значения, а z это результат x-y. Если x и y равны, то z будет положительным нулем. Если результирующее значение слишком велико для представления результирующим типом, то z будет бесконечностью того же знака что и x-y.
| y | +0 | –0 | +∞ | –∞ | NaN | |
| x | z | x | x | -∞ | +∞ | NaN |
| +0 | -y | +0 | +0 | -∞ | +∞ | NaN |
| -0 | -y | -0 | +0 | -∞ | +∞ | NaN |
| +∞ | +∞ | +∞ | +∞ | NaN | +∞ | NaN |
| –∞ | –∞ | –∞ | –∞ | -∞ | NaN | NaN |
| NaN | NaN | NaN | NaN | NaN | NaN | NaN |
Десятичное вычитание определено для типа Decimal. Если результирующее значение слишком велико для представления типом Decimal, то возбуждается исключительная ситуация типа System.OverflowException.
Вычитание значений перечислимого типа. Для каждого перечислимого типа E и его базового типа U определены следующие операции:
X-Y, где X и Y имеют тип E, а результат тип U. Данная операция вычисляется как ((X As U) - (Y As U)).
X-Y, где X имеет тип E, Y тип U, а результат тип E. Данная операция вычисляется как ((X As U) - Y) As E.
См. также: