FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Número con decimales
HOla Tengo un programa dónde tengo una variables declarada así:
Código Delphi [-]Type TOrient = Record Q1 : LongInt; Q2 : LongInt; Q3 : LongInt; Qu : LongInt; Para que almacenar números de hasta 6 decimales. Los números los saco de un fichero de texto, que contiene los números así: 2124.58 Leo el fichero de texto, y el valor lo pongo en un String Mi problema es al convertirlo, ya que siempre me da cero. Uso una línea como esta:
¿que estoy haciendo mal? Gracias /BLueIcaro |
#2
|
||||
|
||||
¿porque utilizas variables tipo entero para leer valores con decimales?
La función StrToIntDef convierte una cadena a un entero y el segundo parámetro es el valor que se tomará en caso de haber un error. Supongo que al querer cambiar un valor con decimales a un tipo entero, te genera un error (obvio) y entonces toma el 0 que le pasas como segundo parámetro.
__________________
|
#3
|
|||
|
|||
Entonces que función debo usar?
/BlueIcaro |
#4
|
||||
|
||||
si lo que quieres es que te queden enteros los decimales podrias usar la funcion round() o trunc(), la primera te redondea un numero decimal a entero por ej. 4.6 = 5, el segundo corta los decimales ej.: 4.6 = 4
__________________
Cuando la única herramienta es un martillo todos los problemas tienen cara de clavo |
#5
|
||||
|
||||
se me olvidaba, antes debes convertir la cadena con la función val(cadena,dato,x)
"cadena" es la variable donde almacenas el dato del fichero que lees, "dato" es una variable de tipo real donde se almacenará el resultado de la conversión y "x" es una variable de tipo integer, que es utilizada por la función val. Despues de esto podras utilizar la función MiOrient.Q1 := trunc(dato) o MiOrient.Q1 := round(dato)
__________________
Cuando la única herramienta es un martillo todos los problemas tienen cara de clavo |
#6
|
||||
|
||||
La función a usar es StrToFloat (mira en la ayuda, es posible que también exista StrToFloatDef o TryStrToFloat, no las he usado, pero existen sus homónomas para integer).
El tipo de datos, en lugar de ser LongInt (entero largo sin decimales), debería ser Extended (real con decimales). Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Formato de celda número con separador de decimales desde delphi para excel via OLE | vick | Conexión con bases de datos | 2 | 31-01-2008 16:35:07 |
Numero con dos decimales | zvf | OOP | 9 | 07-04-2006 20:27:06 |
Numero decimales en un double | satabel | Impresión | 1 | 23-07-2005 18:09:23 |
Número de decimales en Access | javiermorales | Conexión con bases de datos | 1 | 15-09-2004 21:24:39 |
aproximar numero hasta dos decimales | Letty | Varios | 14 | 28-01-2004 18:01:07 |
|