:?: how do I get the high-lighted lines below to round up to just two (2) decimal places using the setprecision

// Program description: Calculate the price, including taxes, of a water bill
// given the amount of water in gallons
// Author: Eric Martin
// Date: 10.21.2004

#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;

int main (){
    // Declare identifiers

    float Water;
    float Srate;
    float Wrate;
    float Gallons;
    float Taxes;
    float Total1;
    float Total2;

    // Initiailize identifiers

    cout << " How much water was used in one month?: ";
    cin >> Water;

    // Formulate
    Gallons = Water / 100;
    Wrate = Gallons * .021;
    Srate = Gallons * .001;
    Total1 = Wrate + Srate;
    Taxes = Total1 * .02;
    Total2 = Total1 + Taxes;

    std::cout << " The amount of water used this month----------" << Gallons << endl;

    [COLOR=Red]std::cout << " Amount due for use of water----------  " << setprecision(0) << Wrate << endl;

    std::cout << " Amount due for sewage----------  "<< setprecision(0) <<  Srate << endl;

    std::cout << " Total water and sewage charge---------- " << setprecision(0) << Total1 << endl;

    std::cout << " Total amount of taxes----------  " << setprecision(0) << Taxes << endl;

    cout << " TOTAL AMOUNT DUE----------  " << setprecision(0) << Total2 << endl;[/COLOR]   getch();
    return 0;

Greetings dcving,

Fixing this issue is quite simple. Let me expound.

By using setprecision, you asked for two places, and it printed two places. If instead you want two decimal places (positions to the right of the decimal point), you must first choose the fixed-point format. For example:

cout << setiosflags(ios::fixed) << setprecision(2) << x;

The default C++ stream behavior for setprecision(n) is to apply the specification to the entire number, not the fractional part. If this is not what you want, set the fixed-point format first. Furthermore, setiosflags sets the format flags specified by parameter mask. Here is a list of the flags and their description:

[b][u]flag[/u][/b]			[b][u]effect if set[/u][/b]
ios_base::boolalpha	input/output bool objects as alphabetic names (true, false).
ios_base::dec		input/output integer in decimal base format.
ios_base::fixed		output floating point values in fixed-point notation.
ios_base::hex		input/output integer in hexadecimal base format.
ios_base::internal	the output is filled at an internal point enlarging the output up to the field width.
ios_base::left		the output is filled at the end enlarging the output up to the field width.
ios_base::oct		input/output integer in octal base format.
ios_base::right		the output is filled at the beginning enlarging the output up to the field width.
ios_base::scientific	output floating-point values in scientific notation.
ios_base::showbase	output integer values preceded by the numeric base.
ios_base::showpoint	output floating-point values including always the decimal point.
ios_base::showpos	output non-negative numeric preceded by a plus sign (+).
ios_base::skipws	skip leading whitespaces on certain input operations.
ios_base::unitbuf	flush output after each inserting operation.
ios_base::uppercase	output uppercase letters replacing certain lowercase letters.

Hope this helps,
- Stack Overflow

This article has been dead for over six months. Start a new discussion instead.