![]() |
Bug o es normal? - Trunc function
Me he encontrado q la funcion Trunc no hace bien su proposito, o eso me parece (vamos, yo diria q no es normal :eek:). Uso Delphi 2k6.
Ahi va el ejemplo q creo q demuestra q no funciona (o eso creo yo):
He probado cambiando el 100 por 101 o 100.01 (entre otros), y si funciona, pero no veo logico lo q hace con 100 exactos:
Quizas sea ya un "bug" conocido, pero... si no es un bug, ¿puede alguien explicarmelo el pq hace esto?, hehe Gracias. |
yo creo que el problema puede estar en la operacion con numeros reales, no tanto en el trunc, porque no intentas usar el tipo currency en lugar del real?
|
Y pregunto yo, ¿todo esto es para obtener la parte decimal de un número? Porque si es así acabas antes usando la función Frac()
|
Con la poca precisión del real, lo mas seguro es que valor1 no sea nueve, sino en realidad 8.999999999996 o algo así. Evidentemente, el trunc de eso es 8 y no 9. Pero este no es un problema de delphi, es un problema de las computadoras y los formatos para almacenar números.
Como ya te dijeron, podes obtener la parte fraccionaria directamente, o usar números con mas precisión, como los Double. Aún con estos, el problema persistirá, solo que ocurrirá menos veces (aquellas para las que la precisión del número resulte insuficiente para la operación que realizas y el resultado que queres ver). Hasta luego. ;) |
No, no lo hago para obtener la parte decimal, eso es un pequeño ejemplo q he puesto, lo q yo queria es pasar de un "real" a un "entero" (Real -> Integer/Word), y me di cuenta q en el codigo original no me devolvia el valor "correcto" e hice este pequeño (e inutil) ejemplo para comprobarlo.
Pero probare con double u otros. Saludos. |
Cita:
Hasta luego. ;) |
jachguate lo de pasar de una variable con un valor "Real" a un "Integer" era pq necesitaba acceder a una posicion de un "Array", y la posicion se obtenia apartir de una formulita (xorra) q requeria de numeros reales, pero el resultado era un numero "natural". Tu solucion es buena tambien, pero con cambiar de "Real" a "Extended" ya funciono bien (y asi me libro de incluir Math al uses :p xDDD)
Saludos. |
La franja horaria es GMT +2. Ahora son las 21:00:49. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi