Как Вы делите целые числа и получаете двойное в C#?

В исследовании этого для ответа на него я немного смущен, что поведение, которое Вы видите, происходит, конечно, действие нажатия на меню File или что имеет Вас, должен не сфокусировать текстовое поле и установить его на меню?

6
задан Peter Mortensen 29 November 2009 в 05:43
поделиться

6 ответов

Потому что деление выполняется целыми числами, которые затем преобразуются в двойное. Попробуйте вместо этого:

double pct = (double)x / (double)y;
34
ответ дан 8 December 2019 в 02:06
поделиться

Это действительно то же самое во всех C-подобных языках. Если разделить два целых числа, результат будет целым. 0,73 не является целым числом.

Обычным решением является умножение одного из двух чисел на 1,0, чтобы сделать его типом с плавающей запятой, или просто приведение его.

8
ответ дан 8 December 2019 в 02:06
поделиться

Целочисленное деление отбрасывает дробную часть результата. См .: http://mathworld.wolfram.com/IntegerDivision.html

2
ответ дан 8 December 2019 в 02:06
поделиться

, потому что операция все еще выполняется с типом int. Попробуйте double pct = (double) x / (double) y;

3
ответ дан 8 December 2019 в 02:06
поделиться

Важно понимать поток выполнения в строке кода. Вы правы, полагая, что установка правой части уравнения равной double (в левой части) неявно преобразует решение как double. Однако выполнение потока требует, чтобы x / y вычислялся сам по себе , прежде чем вы даже дойдете до части кода double pct = . Таким образом, поскольку два int разделены друг на друга, они будут оценивать решение int (в данном случае с округлением до нуля) до того, как будет неявно преобразовано в двойное.

Как уже отмечалось, вам нужно преобразовать переменные int как double s, чтобы решение получилось как double а не как int .

2
ответ дан 8 December 2019 в 02:06
поделиться

Это потому, что тип левого операнда деления ( x ) имеет тип int , поэтому возвращаемый тип x / y по-прежнему int . Тот факт, что переменная назначения имеет тип double , не влияет на операцию. Чтобы получить желаемый результат, сначала необходимо преобразовать (преобразовать) x в double , как в:

double pct = (double)x / y;
1
ответ дан 8 December 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: