Discussion:
truncar un flotantate
(demasiado antiguo para responder)
Efrén
2004-05-07 19:15:07 UTC
Permalink
Pues eso, que si hay alguna forma de trucar un flotante por ejemplo a solo
dos decimales

Un saludo,
Efrén.
RETECAL nos tima - MechaKaiser
2004-05-07 20:13:44 UTC
Permalink
Post by Efrén
Pues eso, que si hay alguna forma de trucar un flotante por ejemplo a
solo dos decimales
Multiplícalo por 100, lo truncas a entero y el resultado lo tratas como
centésimas. (O lo divides por cien de nuevo a un flotante)
Antoine Leca
2004-05-10 14:07:12 UTC
Permalink
Post by Efrén
Pues eso, que si hay alguna forma de trucar un flotante por ejemplo a
solo dos decimales
double f;
int n=2;


xxprintf(".*f", n, f)

¿O tengo mal entendido tu pregunta?


Antoine
Loco
2004-05-11 15:20:19 UTC
Permalink
Post by Efrén
Pues eso, que si hay alguna forma de trucar un flotante por ejemplo a solo
dos decimales
Un saludo,
Efrén.
num=2.324
Si es por pantalla, igual lo que quieres es:
printf("%2.2f",num);

lo que te saldría:

2.32

No sé si es lo que estás preguntando...

L0C0.
Efrén
2004-05-11 20:13:58 UTC
Permalink
A ver me explico un poco mejor...

El problema es que al hacer 0.1/1 0.2/2 0.3/3 todos ellos deberian dar
el valor 0.1 exacto, lo que pasa que al hacer una depuracion del programa y
ver los valores que tienen las variables en vez de 0.1 tienen 0.100000001234
por ejmplo.

Por eso queria truncar el numero a los primeros valores, porque los necesito
para hacer comparaciones entre ellos y por eso no funciona como yo necesito.

Asi que lo que necesito seria truncar el valor en la variable y no a la
hora de imprimir el valor.

Gracias a todos,
Efrén.

PD: lo siento Loco que creo que te mande el mensaje a ti en vez de al grupo
Post by Loco
Post by Efrén
Pues eso, que si hay alguna forma de trucar un flotante por ejemplo a solo
dos decimales
Un saludo,
Efrén.
num=2.324
printf("%2.2f",num);
2.32
No sé si es lo que estás preguntando...
L0C0.
Iñaki Arenaza
2004-05-11 21:24:49 UTC
Permalink
Efrén> Asi que lo que necesito seria truncar el valor en la
Efrén> variable y no a la hora de imprimir el valor.

Mas que truncar el valor, lo que tienes que hacer es comparar con una
cierta tolerancia. Es lo que tiene la coma flotante, que no siempre
puede representar los valores de forma exacta...

Saludos. Iñaki.

- --
Get PGP/GPG Keys at http://www.escomposlinux.org/iarenaza/pgpkey.php
I use free software / Yo uso software libre
Efrén
2004-05-12 11:59:56 UTC
Permalink
Post by Iñaki Arenaza
Mas que truncar el valor, lo que tienes que hacer es comparar con una
cierta tolerancia. Es lo que tiene la coma flotante, que no siempre
puede representar los valores de forma exacta...
Si, me acabas de dar una idea voy a probar con eso.
Gracias

Miguel
2004-05-11 23:42:44 UTC
Permalink
Post by Efrén
Por eso queria truncar el numero a los primeros valores, porque los necesito
para hacer comparaciones entre ellos y por eso no funciona como yo necesito.
Para hacer estas comparaciones dispones de los epsilon, al menos para el
fpu de intel que usa el ieee 754...
Saludos
--
Miguel
Antoine Leca
2004-05-12 08:54:10 UTC
Permalink
Post by Efrén
A ver me explico un poco mejor...
El problema es que al hacer 0.1/1 0.2/2 0.3/3 todos ellos
deberian dar el valor 0.1 exacto, lo que pasa que al hacer una
depuracion del programa y ver los valores que tienen las variables en
vez de 0.1 tienen 0.100000001234 por ejmplo.
Por eso queria truncar el numero a los primeros valores, porque los
necesito para hacer comparaciones entre ellos y por eso no funciona
como yo necesito.
Ya te lo decía otro ("RETECAL nos tima - MechaKaiser" en
<news:***@213.4.130.20>:
: Multiplícalo por 100, lo truncas a entero y el resultado lo tratas como
: centésimas. (O lo divides por cien de nuevo a un flotante)

Para lo que querres ahora, es mucho mejor NO dividir de nuevo, de esta
manera te ahorres los problemas con los redondeos de coma flotante.

Cuidado, has preguntado por truncar, y eso te lo decimos. Si quieres
redondear, que es otra cosa, la repuesta es diferente.


Antoine
Loading...