DennisKingsman
@DennisKingsman
Студент

Как получить дробное число при делении 1 на 1?

у меня есть код
#include <iostream>

using namespace std;

int main() {
	int i = 1;
	int j = 1;

	cout << 1.0 * i / j << endl;

	system("pause");
	return 0;
}

если i = 9, j = 4, то все нормально и я получаю дробь, но когда я пытаюсь получить 1.0 выводит просто 1
  • Вопрос задан
  • 322 просмотра
Решения вопроса 1
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
вы можете сделать явное преобразование типов данных
код программы:
#include <iostream>

using namespace std;

int main() {
  int i = 1;
  int j = 1;
  cout << fixed;
  cout << (float)(j/j) << endl;

  return 0;
}


компилируем и выполняем:
work@parents:~/temp> gcc test.cpp -lstdc++  -o test.o
work@parents:~/temp> ./test.o
1.000000
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
myjcom
@myjcom Куратор тега C++
Смотря что нужно.
#include <iostream>
#include <iomanip>
#include <cstdlib>

int main()
{
  int a = 9;
  int b = 4;
  std::div_t result = div(a, b);
  std::cout << result.quot << " " << result.rem << std::endl;
  // Наверное это
  std::cout.precision(1);
  std::cout << std::fixed << static_cast<double>(a) / b << std::endl;
}
Ответ написан
Комментировать
reverse_kacejot
@reverse_kacejot
Junior C++ Developer, bachelor of Applied Math
Тип вашего выражения - double.
Это можно проврить очень простым способом (я так сделал):

создать объявление шаблонного класса без реализации и инстанцировать его выражением. Ошибка компиляции покажет тип:

template <typename T>
class TD;

int main() {
    int i = 1;
    int j = 1;

    TD<decltype (1.0 * i / j)> td;
}


Ошибка:
/home/maxim/Workspace/my/cdm/main.cpp: In function ‘int main()’:
/home/maxim/Workspace/my/cdm/main.cpp:61:32: error: aggregate ‘TD<double> a’ has incomplete type and cannot be defined
     TD<decltype (1.0 * i / j)> a;


Как видим, тип вывелся как double
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы