Целочисленное деление всегда равно нулю
Возможный дубликат:
C программирование
наверное, мой вопрос очень прост и глуп. Я хотел бы сохранить значение деления, в частности 1 / x
где x
– целочисленное значение.
int x = 17; double result = 1/x;
Я пытаюсь это сделать, но я всегда получаю 0.000000 ...
Я пытаюсь ввести значение, зафиксированное в x, например 1/17
но всегда получаю то же значение .. что случилось?
- Должны ли мы обычно использовать float-литералы для поплавков вместо простых двойных литералов?
- Вставить в int vs floor
- Сравнение поплавков и удвоений IEEE для равенства
- Пример FloatingActionButton с библиотекой поддержки
- Android Как реализовать нижний лист из документации по материальному дизайну
- Как вы объедините число с плавающей запятой в Perl?
- Значение синуса 180 выходит как 1.22465e-16
- Как отобразить двоичное представление float или double?
- Почему преобразование из float в double изменяет значение?
- Странное поведение при приведении float в int в C #
- Двойной расчет, создающий нечетный результат
- Сравнение с плавающей точкой
- Преобразование double / float в строку
Вы выполняете целочисленное деление.
Попробуйте следующее, и он будет работать, как ожидалось:
int x = 17; double result = 1.0 / x;
Тип 1
в выражении, который у вас выше, есть int
, а тип x
– int. Когда вы делаете int / int
, вы получаете int back. Для деления с плавающей запятой требуется, по крайней мере, один из типов, которые должны быть плавающей точкой ( float
или double
).
В отличие от математики, деление на C ++ может ссылаться на усеченное целочисленное деление (что вы сделали) или на деление с плавающей запятой (что я сделал в моем примере). Будьте осторожны!
В моем примере, явно, что у нас есть double / int -> double
.