Подтвердить что ты не робот

Отдел на С++ работает не так, как ожидалось

Я работал над чем-то другим, но все получилось как ноль, поэтому я сделал этот минималистский пример, а результат все равно 0.

#include <iostream>

int main(int argc, char** argv)
{
  double f=3/5;
  std::cout << f;
  return 0;
}

Что мне не хватает?

4b9b3361

Ответ 1

Вам не хватает того, что 3 и 5 являются целыми числами, поэтому вы получаете целочисленное деление. Чтобы компилятор выполнил деление с плавающей запятой, сделайте одно из них действительным числом:

 double f = 3.0 / 5;

Ответ 2

Это не должно быть .0, вы также можете сделать 3./5 или 3/5. или 3e+0 / 5 или 3 / 5e-0 или 0xCp-2 / 5 или... Там должен быть только соответствующий индикатор что компилятор знает, что он должен выполнять деление как плавающую точку.

Другая возможность: double f=double(3)/5. Это намного больше печатает, но это не оставляет никаких сомнений в том, что вы делаете.

Или просто используйте double f=.6, который также выполняет трюк...

Ответ 3

попробуйте следующее:

double f = 3.0/5.0;

это должно решить вашу проблему.

Ответ 4

Попробуйте поставить .0 после одного из делителей. Это преобразует их в литералы с плавающей запятой.

Ответ 5

Вы используете целые числа. Вы можете многое сделать, чтобы ваши константы были такими же, как и leftaroundabout, но это не очень хорошо. Трудно читать и запутывать. Если вы хотите, чтобы 3 и 5 сделали их 3.0 и 5.0. Каждый будет знать, что вы имеете в виду, если они вынуждены читать ваш код. Большая часть того, что он/она заявляет, действительно требует, чтобы вы знали C/С++ и как float - хранилище для создания голов или хвостов.