![]() |
#1 |
Administrador
![]() |
Duda tonta programación, me estoy volviendo loco.
Buenas.
Me ha surgido un problema tontísimo en la programación del alpha front-end. A ver si alguno de vosotros tiene idea de qué puede fallar porque tengo la cabeza como un bombo y me voy a volver loco. Print 1/1.99 ... y me sale 0.502512574 ¡bien! Print 1/0.5 ... y sale 2, tambien bien. Print 1/2 o cualquier cosa cuyo resultado sea menor de 0.5 y se me va a cero ![]() Joder, es que no lo entiendo. Alguna idea de qué puede ser? ya se que de blitzmax por aquí nadie controla, pero como es algo tan tonto, quizás sepáis por dónde pueden ir los tiros, que yo no ando con compiladores ni cosas de estas. |
![]() |
#2 |
Marciano
![]() |
Eso es por el tipo del dato.
Si son enteros es posible que el resultado tambien sea un entero 1/2 = 0,5 que redondeando a entero sale 0. Y si lo declaras como real? |
![]() |
#3 |
Administrador
![]() |
Está declarado como flotante... si fuese entero no podrían salir decimales nunca. Eso es lo que me extraña...
Vamos, que creando dos programas: i:float i=1/2 print i o este segundo print 1/2 obtengo el mismo resultado...así, sin más... Y como me da un 0.000000000, entiendo que está todo correcto en cuanto a las definiicones de tipos de variables. |
![]() |
#4 | |
Marciano
![]() |
Quote:
x:float y:float i:float x=1 y=2 i=x/y print i Otra opción (desconozco ese lenguaje blitzmax) para que sepa que son flotantes: print 1.0/2.0 Ya me diras ![]() |
|
![]() |
#5 |
Administrador
![]() |
Oleeeeeeeeeee!!! asignando los dos valores como flotantes, si sale... y como tengo que dividir 1/... con poner 1.0, solucionado
![]() Muchísimas gracias, macho. Lo peor de todo es que esto yo ya lo debería saber, que hace años tuve problemas similares con el puto fortran :b |