C - Printing out float values

c, c++, floating-point, precision

Solution

Take advantage of the length and precision specifiers in C formatted print statements:

printf( "%6.4lf", number );

Prints four decimal places in a "cell" six characters wide.

You can use a wildcard character for either length or precision to provide that value at runtime:

int precision = 4;

printf( "%6.*lf", precision, number );

Problem

I have a C++ program that takes in values and prints out values like this: ``` getline(in,number); cout << setw(10) << number << endl; ``` I have an equivalent C program that takes in values and prints out like so: ``` fscanf(rhs, "%e", &number); printf("%lf\n", number); ``` But while the C++ program prints out, `0.30951` the C program prints out `0.309510`. More examples: C++: `0.0956439` C: `0.095644`. It seems to print the same results as long as the value is 7 digits long, but if its shorter the 7 digits, it adds an extra 0 at the end. And if its longer than 7 digits, it rounds down to 6 digits. I would like the C results to match the C++ program. Any help would be appreciated. Thanks. Note: number is a float and number are read from a file.

Original source