Как вывести float ни в научной, ни в фиксированной записи в std :: cout? - PullRequest
2 голосов
/ 02 декабря 2010
#include <iostream>

int main()
{
    float test = 12535104400;

    std::cout << test;

    std::cin.get();
    return 0;
}

//on msvc 2010 this ouputs:  1.25351e+010

Я бы хотел вывести только «12535104400» или, другими словами, читаемый человеком формат, который не имеет ведущих нулей, но выводит полное значение числа.

Ответы [ 6 ]

5 голосов
/ 02 декабря 2010

Конкретное число не может быть точно представлено, например, попробуйте следующее:

  float v = 12535104400;
  cout.precision(0);
  cout << fixed << v << endl;

Вы увидите, что выводит: 12535104512

5 голосов
/ 02 декабря 2010

Вам нужно будет включить <iomanip>:

int main()
{
    const double test = 12535104400;

    std::cout << std::fixed << std::setprecision(0) << test;

    std::cin.get();
    return 0;
}
  • std::fixed - манипулятор, использующий точность с фиксированной точкой (не научное обозначение)
  • std::setprecision(0) устанавливает количество отображаемых цифр после десятичной точки
2 голосов
/ 02 декабря 2010

float test = 12535104400;

Это должно быть ошибкой компилятора, если ваш компилятор не поддерживает long long, а int 32-битный. Используйте плавающие литералы вместо целочисленных литералов, например 1234.0f против 1234

#include <iostream>
#include <iomanip>
int main()
{
    float test = 12535104400.0f;

    std::cout << std::setiosflags(ios::fixed) << std::setprecision(0) << test;

    std::cin.get();
    return 0;
}

должен напечатать, что вы хотите. Но остерегайтесь, что плавание не так точно

1 голос
/ 02 декабря 2010

Вам не повезло, 4-байтовое число с плавающей запятой может хранить около 7 цифр. Используйте двойные или длинные для таких чисел.

0 голосов
/ 02 декабря 2010

Если вы хотите потерять точность, вы можете ввести ее целым числом.

cout << int(test);

или

cout << (int)test;

0 голосов
/ 02 декабря 2010

Чтобы отформатировать вывод в iostream, вам понадобятся манипуляторы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...