Технически это зависит от языка, но почти все языки относятся к этому предмету одинаково. Когда между двумя типами данных в выражении возникает несоответствие типов, большинство языков пытаются привести данные с одной стороны =
к данным с другой стороны в соответствии с набором предопределенных правил.
При делении двух чисел одного типа (целых, двойных и т. д.) результат всегда будет одного типа (поэтому 'int/int' всегда будет иметь результат int).
В этом случае у вас есть double var = integer result
, который приводит целочисленный результат к двойному после вычисления, и в этом случае дробные данные уже потеряны. (большинство языков будут выполнять это приведение, чтобы предотвратить неточности типов, не вызывая исключения или ошибки).
Если вы хотите сохранить результат как двойной, вам нужно создать ситуацию, когда у вас есть double var = double result
Самый простой способ сделать это — заставить выражение в правой части уравнения привести к удвоению:
c = a/(double)b
Разделение между целым числом и двойным числом приведет к приведению целого числа к двойному (обратите внимание, что при выполнении математических операций компилятор часто выполняет «восходящее преобразование» к наиболее конкретному типу данных, чтобы предотвратить потерю данных).
После приведения вверх a
превратится в двойника, и теперь у вас есть деление между двумя двойниками. Это создаст желаемое разделение и присвоение.
ОПЯТЬ, обратите внимание, что это зависит от языка (и может даже от компилятора), однако почти все языки (конечно, все те, которые я могу придумать навскидку) обрабатывают этот пример одинаково.
person
matthewdunnam
schedule
27.09.2011