[pyar] Int anti-intuitivo

Tordek kedrot en gmail.com
Mie Nov 17 15:30:07 ART 2010


On 17/11/10 08:24, Roberto Alsina wrote:
> No, es porque son floats y los floats son así. Fijate lo que tu ejemplo hace
> en C:
>
> [ralsina en hp ~]$ cat f.c
> int main() {
>      double x1;
>      x1 = strtold("9999999999999999.0");
>      printf ("%f\n", x1);
> }
> [ralsina en hp ~]$ tcc -run f.c
> -1910781505.000000

Error: strtold lleva 2 parámetros: el segundo indica donde terminó 
de evaluar. (Así podés elegir si querés el chequeo estilo Python, o 
más relajado.)


Precisión Double
================

$ cat double.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() {
     double x1;
     char *string = "9999999999999999.0";
     x1 = strtold(string, NULL);
     printf ("%F\n", x1);
}
~
$ gcc double.c && ./a.out
10000000000000000.000000


Precisión Long Double
=====================
~
$ cat double.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() {
     long double x1;
     char *string = "9999999999999999.0";
     x1 = strtold(string, NULL);
     printf ("%LF\n", x1);
}
~
$ gcc double.c && ./a.out
9999999999999999.000000

-- 
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
http://tordek.com.ar :: http://twitter.com/tordek
http://www.arcanopedia.com.ar - Juegos de Rol en Argentina



More information about the pyar mailing list