Ответ 1
Вам не хватает того, что 3 и 5 являются целыми числами, поэтому вы получаете целочисленное деление. Чтобы компилятор выполнил деление с плавающей запятой, сделайте одно из них действительным числом:
double f = 3.0 / 5;
Я работал над чем-то другим, но все получилось как ноль, поэтому я сделал этот минималистский пример, а результат все равно 0.
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
Что мне не хватает?
Вам не хватает того, что 3 и 5 являются целыми числами, поэтому вы получаете целочисленное деление. Чтобы компилятор выполнил деление с плавающей запятой, сделайте одно из них действительным числом:
double f = 3.0 / 5;
Это не должно быть .0
, вы также можете сделать 3./5
или 3/5.
или 3e+0 / 5
или 3 / 5e-0
или 0xCp-2 / 5
или... Там должен быть только соответствующий индикатор что компилятор знает, что он должен выполнять деление как плавающую точку.
Другая возможность: double f=double(3)/5
. Это намного больше печатает, но это не оставляет никаких сомнений в том, что вы делаете.
Или просто используйте double f=.6
, который также выполняет трюк...
попробуйте следующее:
double f = 3.0/5.0;
это должно решить вашу проблему.
Попробуйте поставить .0
после одного из делителей. Это преобразует их в литералы с плавающей запятой.
Вы используете целые числа. Вы можете многое сделать, чтобы ваши константы были такими же, как и leftaroundabout, но это не очень хорошо. Трудно читать и запутывать. Если вы хотите, чтобы 3 и 5 сделали их 3.0 и 5.0. Каждый будет знать, что вы имеете в виду, если они вынуждены читать ваш код. Большая часть того, что он/она заявляет, действительно требует, чтобы вы знали C/С++ и как float - хранилище для создания голов или хвостов.