Why does sprintf('%0.7g', pi) only print out 6 decimal places?

29 visualizaciones (últimos 30 días)
Lisa Lee
Lisa Lee el 12 de Ag. de 2017
Comentada: Walter Roberson el 13 de Ag. de 2017
I don't understand why sprintf('%0.7g', pi) only prints out 6 decimal places, since it is given a "7". Can someone please help me out here?
I tried both sprintf('%0.7f', pi) and sprintf('%0.7e', pi). Bot of them will print out 7 decimal places.

Respuestas (1)

Walter Roberson
Walter Roberson el 12 de Ag. de 2017
For %g format, the significant digits start from the first non-zero digit overall. The leading 3 is the first significant figure. If you sprintf('%.7g', 10*pi) you will see that as the number of digits before the decimal place increases, the digits after the decimal place decreases.
  2 comentarios
Lisa Lee
Lisa Lee el 12 de Ag. de 2017
Are you saying that , for %e and %f, the precision number limits the decimal places, however, for %g, the precision number limits the amount of significant figures?
Walter Roberson
Walter Roberson el 13 de Ag. de 2017
Yes. This is documented. See https://www.mathworks.com/help/matlab/ref/sprintf.html#inputarg_formatSpec and notice the table entries talk about "digits after the decimal place" or "significant digits"

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by