Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Número con decimales (https://www.clubdelphi.com/foros/showthread.php?t=49845)

blueicaro 31-10-2007 19:22:13

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:
Código Delphi [-]
 MiOrient.Q1 := StrToIntDef(StBloque,0)

¿que estoy haciendo mal?

Gracias
/BLueIcaro

ContraVeneno 31-10-2007 22:39:29

¿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.

blueicaro 01-11-2007 01:00:40

Entonces que función debo usar?
/BlueIcaro

HenryAraniva 01-11-2007 01:09:58

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

HenryAraniva 01-11-2007 01:14:35

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)

Lepe 01-11-2007 11:16:40

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