Как переместить десятичную точку влево, сохраняя количество отображаемых цифр? - PullRequest
0 голосов
/ 02 февраля 2019

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

Моя функция cout просто

void taxPrint(std::vector<TaxPayer> &citizen)
{
    int loops = 0;

    std::cout << "\nTaxes due for this year: \n" << std::endl;

    do
    {
        std::cout << "Tax Payer #" << loops << " : $" << citizen[loops].taxes << std::endl;
        loops++;
}
while (loops + 1 <= SIZE);

, и в консоли выводится

Tax Payer #0 : $450000
Tax Payer #1 : $210000

Тем не менее, я хочу, чтобы она была

Tax Payer #0 : $4500.00
Tax Payer #1 : $2100.00

Я возился с setw () и setprecision (), но я не совсем понимаю, как они работают.

1 Ответ

0 голосов
/ 02 февраля 2019

std::setw, на самом деле ничего не имеет отношения к точности значения , это для заполнения строки с префиксами вроде: 001-0123-9124 (дополнено 0)

Пример: std::cout << std::setfill('0') << std::setw(5) << 5 << std::endl; напечатает 00005

Вот как это использовать, используя std::fixed и std::setprecision:

void taxPrint(std::vector<TaxPayer> &citizen)
{
    int loops = 0;

    std::cout << "\nTaxes due for this year: \n" << std::endl;

    do
    {
        std::cout << "Tax Payer #" << loops << " : $" << std::setprecision(2) 
                  << std::fixed << citizen[loops].taxes / 100. << std::endl;
        loops++;
    }
    while (loops + 1 <= SIZE);
} // Don't miss this bracket!

Кроме того, посмотрите этот вопрос, чтобы узнать больше об определении фиксированной точности для значения ...

...