C - Printing out float values

风格不统一 提交于 2021-01-27 04:54:09

问题


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.


回答1:


Take advantage of the length and precision specifiers in C++ iostreams

std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";



回答2:


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 );



回答3:


printf("%g\n", number); 

Will solve your problem, %lf is used for double, %f is used for float, and %g is used for float when you want to display all the decimal places and cut off zeros.



来源:https://stackoverflow.com/questions/15511276/c-printing-out-float-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!