Fortran - redondeo en fortran

 
Vista:

redondeo en fortran

Publicado por Lorena (3 intervenciones) el 02/05/2006 20:22:15
Hola!

Quisiera saber si hay una funcion de redondeo para fortran como CHOP o ROUND y si pudieran ayudarme con la sintaxis. Muchisimas gracias...

Lorena
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:redondeo en fortran

Publicado por Carlos (2 intervenciones) el 08/05/2006 04:56:40
No sé si hay alguna función de redondeo, pero lo que yo hago es darle un formato y fijarle un nº de cifras decimales y redondea solo.
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:redondeo en fortran

Publicado por Lorena (3 intervenciones) el 08/05/2006 17:20:30
Gracias Carlos, si existen varias, dependiendo de si quieres al mayor o al menor entero siguiente, o dependiendo AINT, NINT son las mas comunes y son de las funciones intrinsecas.
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:redondeo en fortran

Publicado por trivi (1 intervención) el 01/04/2008 19:17:23
fijarle el numero de decimales en el formato no redondea, a eso se le llama truncar, y lo hace tambien cuando no puede representar mas cifras en la precision que sea, yo para redondear me cree un algoritmo (para practicar mas que nada) pero me daba fallos al pasar de base 2 a base 10, aparecian algunas cifras al final del numero (la 10ª cifra decimal o por ahi) k no deberian existir, aunque imagino que si existira la funcion intrinseca, aunque deberia tener dos entradas, el numero y el numero de decimales de redondeo
yo lo programaria en vez de en general, para el caso que tengas, que seria muy facil
aqui tienes el codigo, lo modifico un poco para dejarlo como una funcion (puede tener algun fallo y ahora creo que se puede mejorar la precision, poniendo las variables decimales en doble precision

FUNCTION RED(D,N)
IMPLICIT REAL*8 (A-H,O-Z), INTEGER*4 (I-N)
C D es el numero, N los decimales, si metes un numero negativo redondea esas cifras de la parte entera
C REDONDEO INCLUYENDO REALES NEGATIVOS
C N numero de decimales con que queremos el redondeo
DO WHILE (D.NE.0)
IF (D.GE.0) THEN
C D numero decimal que queremos redondear
F=D*10.D0**(N)
C F es un numero real D con los decimales desplazados a la izquierda N veces
J=F/1
C J es la parte entera de F
R=J+0.5D0
C R es la parte entera de F + 0.5
F2=J*10.D0**(-N)
C F2 nos da el numero D con N decimales (el resto truncados)
F3=(J+1)*10.D0**(-N)
C F3 nos da el numero D con N decimales y la ultima cifra distinta de cero es una unidad mayor que la de D
IF (R.GT.F) THEN
C Si es por defecto
D=F2
ELSE
C Si es por exceso
D=F3
ENDIF
ELSE
C Realizamos la misma rutina si es negativo, pero llevandolo a los positivos (al final volvemos a cambiar el signo)
D=-D
F=D*10.**(N)
J=F/1
R=J+0.5
F2=J*10.D0**(-N)
F3=(J+1)*10.D0**(-N)
IF (R.GT.F) THEN
WRITE (6,*) D=-F2
ELSE
WRITE (6,*) D=-F3
ENDIF
ENDIF
ENDDO
RETURN
END
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:redondeo en fortran

Publicado por richard carmona (1 intervención) el 20/03/2007 15:46:50
como redondeo Chop o Round
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