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