Dudas con las conversiones de tipos.

Started by Fede, December 20, 2010, 06:53:32 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Fede

Güenaaaas.

Tras 3 días de partime los cuernos con un algoritmo de dither "Floyd–Steinberg", me he dado cuenta de que fallaba por esto:

float fValor=7/16;

Resulta que esto hace que fValor valga 0.

Tengo que poner:

float fValor=7.0/16.0;

Para que funcione.

¿Esto es normal?

Si es así: ¿Algún sitio donde se hable de la conversión de tipos en bennu?


Muuuuuuuuuuuchas graciaaaaaaas.
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

SplinterGU

eso es correcto porque ambos numeros son enteros, al menos 1 tiene que ser float para que te de float la operacion.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Fede

Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

blostec

Fede quizás esto te ayude a comprender como funciona:

Quote
Un detalle muy importante que hay que tener en lo que respecta a estas operaciones aritméticas básicas es que el tipo de datos del resultado (int, word, byte, float...) vendrá dado por el tipo de datos de los operandos. Es decir, que una suma de dos números Int dará un Int, la multiplicación de dos números Float dará un Float, etc. Esto es especialmente delicado cuando estamos realizando estas operaciones (división, multiplicación, etc) entre números decimales y sin darnos cuenta asignamos el resultado a una variable de tipo entera. Lo que ocurrirá es que el resultado se trunca sin redondear, por lo que si éste era por ejemplo 32.94, se convertirá en un 32; si era un 86.351 será un 86.

Cuando un operando es de un tipo (por ejemplo, byte) y el otro operando es de otro tipo (por ejemplo, int), el tipo del resultado será siempre igual a aquél tipo de los dos que esté por encima dentro de la jerarquía siguiente:
float>dword>int>word>short>byte

fuente: Manual de BennuGD escrito por Osk, pagina 37

Tipos de datos en Bennu vía Wiki: Datatypes

SplinterGU

como informacion adicional, eso tambien pasa en C.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2