Почему они не выходят у меня десятичными? (C ++)

Реализовывая код в C ++, использовав cout чтобы показывать из-за экрана серию чисел "double" они выходят у меня как целые числа (или же, если это 6, он хотел бы, чтобы вышел 6.00). Уже я попытался с setprecision, но останься, не меня функционируя. Я оставляю вам пример кода:

cout << setw(7) << " h" << ivb[i]-n+1 << " = " << setprecision(2) << b[i];

(ivb он целый, но b он double).

1
задан 29.03.2016, 19:07
2 ответа

Ты мог бы пробовать используя fixed, показывая, что будет установленное число десятичных цифр после запятой.

cout << setw(7) << " h" << ivb[i]-n+1 << " = " << setprecision(2) << fixed << b[i];

Например:

cout << setprecision (2) << fixed << 2.1;

Он напечатал бы: 2.10

Таким же образом, использование setprecision зависит от способа, в котором десятичная точка форматируется: fixed, scientific или floatfmt () (по умолчанию).

1
ответ дан 24.11.2019, 14:41

Я не вижу проблему, но проверь, что стоимость b[i] была double!, конечно это недостаток. С другой стороны, ВїquГ© он тебе кажется, если он увеличивается nГєmero десятичных?, например:

   << setprecision(5) << b[i];

#include <iomanip>
#include <iostream>

int main()
{
    double num1 = 3.12345678;
    double num  = 3;

    std::cout << std::setprecision(5) << num1 << std::endl;;
    std::cout << num1 << std::endl;

    std::cout << std::setprecision(5) << num << std::endl;;
    std::cout << num << std::endl;

    return 0;
}

ideone

Может видеть, что, хотя номер будет double он не показывает десятичных, может быть, это - то, что он перемещает его, cuanado я говорю, что был double! , с другой стороны может видеть, что, не используя << std::setprecision(5), он показывает ему десятичных.

std::cout << num1 << std::endl; //3.12346

, Если он хочет, чтобы они появились в случае, сходном со случаем номера, может использовать:

std::cout << std::fixed << std::setprecision(5) << num << std::endl;
std::cout << num << std::endl;

ideone

1
ответ дан 24.11.2019, 14:41