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.
eso es correcto porque ambos numeros son enteros, al menos 1 tiene que ser float para que te de float la operacion.
Gracias Splinter. :-*
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 (http://wiki.bennugd.org/index.php?title=Datatypes)
como informacion adicional, eso tambien pasa en C.