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 |
¿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. |
Entonces que función debo usar?
/BlueIcaro |
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
|
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) |
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 |
La franja horaria es GMT +2. Ahora son las 21:06:03. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi