views:

79

answers:

3

I have a double variable in C++ and want to print it out to the screen as a fixed decimal point number.

Basically I want to know how to write a function that takes a double and a number of decimal places and prints out the number to that number of decimal places, zero padding if necessary.

For example:

convert(1.235, 2)

would print out

1.24

and

 convert(1, 3)

would print out

1.000

so the function works as

convert(number as double, number of decimal places)

and simply prints out the required value to standard output (cout).

Does anyone know how to do this?

Thanks in advance.

+4  A: 

Look at the setprecision manipulator which should give you the idea

Chubsdad
A: 

There is no such thing as a "fixed decimal place" number. The convert function will need to be the function that actually prints it out. I would suggest getting the whole part of the number, then print it. If [decimal places]>0 then print a decimal place, then print each decimal individually like: floor((n*log(10,d))%10); <-- just an idea, not actual code.

Alexander Rafferty
+3  A: 

Assuming I'm remembering my format strings correctly,

printf("%.*f", (int)precision, (double)number);
tc.
great thanks for the code
tree-hacker