How %g rounds up floating point numbers?

我是研究僧i 提交于 2019-12-13 15:00:21

问题


While I'm using %g as format specifier in printf(), sometimes it rounds up upto 2 places after decimal point, sometimes upto 3 places , someimes upto 4 places...how it does so?

Actually where we should use %g instead of %f or %e for floating point numbers?


回答1:


The %g format specifier does its rounding just like %f would do, but if %f would result in 4.234000, then %g will omit the trailing zeros and print 4.234.

%g should be used when it makes the most sense in your output format that some numbers are printed as 12345.6, while a slightly bigger number would be printed as 1.235e04.




回答2:


%g automatically 'flips' between using %e and %f depending on the value, in an attempt to display as much information as possible, in the same way as hand-held calculators do. Also, with %g trailing zeroes and decimal point are not included.




回答3:


For the %f conversion, the “precision” is the number of digits after the decimal point, while for %g it is the number of significant digits.
The default precision is 6 in both cases.




回答4:


From the printf manual:

"The double argument is converted in style f or e (or F or E for G conversions). The precision specifies the number of significant digits. If the precision is missing, 6 digits are given; if the precision is zero, it is treated as 1. Style e is used if the exponent from its conversion is less than -4 or greater than or equal to the precision. Trailing zeros are removed from the fractional part of the result; a decimal point appears only if it is followed by at least one digit."

I don't mean to "RTFM", but you'll probably find what you're looking for in the manual sections on controlling precision and length.



来源:https://stackoverflow.com/questions/3839408/how-g-rounds-up-floating-point-numbers

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