Глядя на окончательный ответ до 2 знаков после запятой С++

Я пытаюсь округлить свой окончательный ответ до 2 знаков после запятой, так что это доллары и центы. Я новичок в кодировании и не могу разобраться. Я хочу округлить «w» в строке «Сумма, которую вам нужно взимать». Вот мой код:

#include <iostream>

using namespace std;

int main()
{
    string Choice;


    float x, w;

    cout << "Please enter the amount needed." << endl;
    cin >> x;


    w = x/(1-0.0275);   

    cout << "The amount you need to charge is $"<< w << "." << endl;

    return (0);

}

person Godzdude    schedule 03.03.2013    source источник
comment
cplusplus.com/forum/beginner/3600 ?   -  person Tim    schedule 03.03.2013
comment
Вы не можете точно выразить большинство десятичных дробей с помощью чисел с плавающей запятой. Используйте целые числа и рассчитывайте в копейках.   -  person Peter Wood    schedule 03.03.2013


Ответы (3)


Согласно примеру здесь http://www.cplusplus.com/forum/beginner/3600/ Вы можете использовать

cout << setprecision(2) << fixed << w << endl;

(fixed необязательно)

Вам придется #include <iomanip>

Как указывает Synxis, это будет работать только для печати значения, оно не изменит значение, хранящееся в w.

person Tim    schedule 03.03.2013
comment
Правильно только для печати. Если он хочет, чтобы 'w' имел только два десятичных знака, ему нужно его округлить ( int(100 * w)/100.0 ). - person Synxis; 03.03.2013
comment
Это правда, но я подумал, что это то, что ему нужно - person Tim; 03.03.2013
comment
Имеет смысл, поскольку строка находится прямо перед оператором return. - person Mike D; 03.03.2013
comment
Это потрясающе. Спасибо! Добавил это в код здесь: compilr.com/timbogrocott/square/Square.cpp - person Godzdude; 03.03.2013

Вы всегда можете умножить свой ответ x на 100, округлить, а затем разделить на 100.

x = (int)(x*100+0.5f);  
x = ( (float)(x) ) / 100.0;   
person namu    schedule 03.03.2013

Вы можете изменить свою денежную единицу на «центы», а затем разделить на 100, чтобы получить доллары, и модифицировать 100, чтобы получить центы.

unsigned int money = 152; // USD $1.52

cout << "Money is: " << (money / 100) << "." << (money % 100) << "\n";

Это может быть более точным. Поищите в сети "все знает плавающую точку".

person Thomas Matthews    schedule 03.03.2013