Uso del apostrophe
bandera no estándar en la cadena de formato printf, si tiene esa opción disponible y no le importa perder un poco de portabilidad.
Según mi documentación, la bandera '
está disponible para los sistemas POSIX desde 1997.
Si está en Unix, Linux, Mac, ... usted debe tener ningún problema
Si está en Windows, DOS, iSeries, Android, ... todas las apuestas están apagadas (pero tal vez puedas instalar una capa POSIX en tu sistema).
#include <locale.h>
#include <stdio.h>
int main(void) {
long int x = 130006714000000;
setlocale(LC_NUMERIC, "en_US.utf-8"); /* important */
while (x > 0) {
printf("# %%'22ld: %'22ld\n", x); /* apostrophe flag */
x *= 2; /* on my machine, the Undefined Behaviour for overflow
// makes the number become negative with no ill effects */
}
return 0;
}
En mi sistema produce este programa:
# %'22ld: 130,006,714,000,000
# %'22ld: 260,013,428,000,000
# %'22ld: 520,026,856,000,000
# %'22ld: 1,040,053,712,000,000
# %'22ld: 2,080,107,424,000,000
# %'22ld: 4,160,214,848,000,000
# %'22ld: 8,320,429,696,000,000
# %'22ld: 16,640,859,392,000,000
# %'22ld: 33,281,718,784,000,000
# %'22ld: 66,563,437,568,000,000
# %'22ld: 133,126,875,136,000,000
# %'22ld: 266,253,750,272,000,000
# %'22ld: 532,507,500,544,000,000
# %'22ld: 1,065,015,001,088,000,000
# %'22ld: 2,130,030,002,176,000,000
# %'22ld: 4,260,060,004,352,000,000
# %'22ld: 8,520,120,008,704,000,000
¿Cómo le gustaría que se impriman sus números para que sean más fáciles de leer? ¿Dígitos en grupos de tres? ¿Separado por comas? Espacios? –
No tengo un requisito estricto; Supongo que hay comas con dígitos en grupos de 3 ... – vehomzzz
Esta funcionalidad ya está integrada en el objeto std :: ostream. Solo necesita impregnar la transmisión con la configuración correcta. Vea la respuesta de Patrick a continuación. –