Pascal/Turbo Pascal - Truncar decimales

 
Vista:

Truncar decimales

Publicado por Dailos (3 intervenciones) el 30/10/2007 16:20:05
Tengo un numero decimal con muchisimas cifras decimales y necesito que en mi variable solo se almacenen los n primeros digitos decimales, es decir tengo por ejemplo :

1.003003001 almacenado en a que es un real
y quiero que en a solo se almacene 1.0030030, quiero decir con esto no mostrar solo eso que eso si sabria hacerlo sino que en la variable solo se almacene los n primeros digitos nada mas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Truncar decimales

Publicado por Elena (3 intervenciones) el 30/10/2007 18:37:40
Hola;

Puedes usar la fórmula:

write(num:X:Y)

donde X corresponde al número de espacios y la Y los decimales.

Nota que este método 'redondea' el último dígito.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Truncar decimales

Publicado por lauraps90 (19 intervenciones) el 16/09/2010 00:43:55
Auxilio!!!
Tengo tarea de programación en Pascal. Resulta que me pidieron hacer un programa para convertir de pulgadas a centímetros y viceversa, todo bien.
Pero el problema es que como son distancias le tengo que ponerle a las variables el tipo real y el resultado me sale bueno pero con un montòn de ceros y una E de quien qué cosa, o sea si me da 5.2 en la pantalla me sale 5.20000000000000000 E+00
Cómo le hago para que no me salgan tantos decimales y quitar esa E?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Truncar decimales

Publicado por Mariano (57 intervenciones) el 30/10/2007 19:12:57
Hola Dailos! Mira, la respuesta que te dio elena, no trunca los decimales de mas, sino lo que hace es no mostrarlos en pantalla.
Es por esto, que aca te dejo una funcion que hice recien, donde le pasas dos paramatros, el numero real a truncar, y le pasas otro parametro, con la cantidad de digitos decimales que deseas preservar., y te devuelve el numero real truncado.

function Trunca (var x:real;cant:byte):real;
var
a,d:real;
b:word;
i:byte;
begin
a:=frac(x);
for i:=1 to cant do
a:= a * 10;
d:=int(a);
for i:=1 to cant do
d:=d * 1/10;
a:=int(x);
Trunca:=a + d
end;

Avisaaa si funcionooo o si era lo que necesitabas :)

Un abrazooo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Truncar decimales

Publicado por NachoC (5 intervenciones) el 30/10/2007 21:17:40
La idea de Mariano es la buena: si no quieres mostrar truncado, sino eliminar realmente los decimales, el "truco" más habitual es multiplicar por una potencia de 10, eliminar decimales y volver a dividir.

Por ejemplo, para dejar 3 decimales en 876,54321:

Primero mutiplicarías por 1000

-> 8764543,21

Luego eliminarías los decimales ("truncarías", para conservar sólo la parte entera):

-> 876543

Finalmente volverías a dividir por 1000

-> 876,543
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar