В строго типизированных языках результат математических операций обычно тот же тип, что и больший тип.
C # имеет список неявных числовых преобразований , которые он будет делать.
Обобщение этого списка: Интегральные типы могут быть преобразованы в типы с плавающей запятой, но не наоборот. Целочисленные типы также могут быть неявно преобразованы в decimal
, но типы с плавающей точкой не могут.
Примечание. Это также означает, что приведение одного из целых к другому типу приведет к тому, что весь тип ответа будет таким.
например: (decimal) a / b * 100.0 = 50.0
ТЛ; др:
В C #:
int / int = int
int + decimal = decimal
decimal + int = decimal
int / int * decimal = (int / int = int) * decimal = decimal
int - float = float
int * double = double
float / decimal = an error
int - uint = an error (either that or ulong)