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.
Use "%. By using this format specifier we can print specific number of digits after the decimal, here "n" is the number of digits after decimal point.
Try formatting the float like this: NSLog(@"%. 2f", myFloat); The % sign means this will be replaced by the corresponding argument following ( myFloat ).
So, you can see here that %d is used for integers, %f for floats and %c for characters. As simple as that!
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 );
Take advantage of the length and precision specifiers in C++ iostream
s
std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With