Redondeo numerico y lenguajes de programación

Solo disponible en BuenasTareas
  • Páginas : 17 (4185 palabras )
  • Descarga(s) : 0
  • Publicado : 16 de junio de 2011
Leer documento completo
Vista previa del texto
Redondeo numérico y lenguajes de programación

Javier Goizueta 2001–2004

1.

Funciones de redondeo

Existe cierta confusión sobre el funcionamiento de las distintas operaciones de conversión de números no enteros a enteros disponibles en algunos lenguajes de programación. En este documento se trata de clarificar la situación e introducir algunas subrutinas útiles para la programación.Veremos en primer lugar las funciones matemáticas fundamentales que convierten números reales en enteros, y las distintas funciones disponibles para implementarlas en una selección de lenguajes de programación. Los lenguajes que consideraremos son: C/C++: Ruby: Python: ECMAScript: Java: C#: Mathematica: RPL: Visual Basic: Fortran: Pascal: Funciones de las bibliotecas estándar Módulos de la bibliotecaestándar Módulos de la biblioteca estándar Objetos nativos del estándar de JavaScript Clases del módulo java.lang Bibliotecas del sistema .NET Funciones incorporadas del sistema Lenguaje User-RPL de las calculadoras HP (28, 48, 49) Funciones de Microsoft VB 6, VBA, VBScript Funciones intrínsecas de Fortran77 Rutinas estándar de Object Pascal (Delphi/Kylix)

1.1.

Entero inferior

La funciónfloor, x , a veces denotada [x], es el mayor entero menor o igual que x. También es conocida por el nombre francés entier.
3

C/C++: Ruby: Python: ECMAScript: Java: C# (.NET): Mathematica: RPL: Visual Basic:

floor(x) x.floor math.floor(x) Math.floor(x) java.lang.Math.floor(x) System.Math.Floor(x) Floor[x] x FLOOR Int(x)

2 1

-3

-2

-1 -1 -2 -3

1

2

3

x

1.2.

Enterosuperior
3

La función ceiling, x = − −x , es el menor entero mayor o igual que x. C/C++: Ruby: Python: ECMAScript: Java: C# (.NET): Mathematica: RPL: Visual Basic: ceil(x) x.ceil math.ceil(x) Math.ceil(x) java.lang.Math.ceil(x) System.Math.Ceiling(x) Ceiling[x] x CEIL -Int(-x)

2 1

-3

-2

-1 -1 -2 -3

1

2

3

x

round.w

1 / 19

Redondeo numérico y lenguajes deprogramación

Javier Goizueta 2001–2004

1.3.

Parte entera
x x si x 0 si x < 0

Ésta es la función que devuelve la parte entera de un número: E(x) =
3 2 1

Ruby: Mathematica: RPL: Visual Basic: Pascal: Fortran:

x.truncate = x.to_i IntegerPart[x] x IP Fix(x) Trunc(x) AINT(x)

-3

-2

-1 -1 -2 -3

1

2

3

E(x) 1.3.1. Parte fraccionaria La parte fraccionaria es F(x) = x −E(x).
1

0.5

-3

-2

-1

1

2

3

Mathematica: RPL: Visual Basic: Pascal:

FractionalPart[x] x FP x-Fix(x) Frac(x)

-0.5

-1

F(x)

1.4.

Redondeo

Podemos definir diferentes funciones para calcular el entero más cercano a un número según cuál sea el tratamiento de los números el conjunto M = {x| |F(x)| = 1/2} = {x|x + 1/2 ∈ Z}, ya que éstos número son equidistantes delos enteros inferior y superior más cercanos. R+∞ (x) = R−∞ (x) = R0 (x) = R(x) ≡ R∞ (x) = x + 1/2 x − 1/2 x − 1/2 x + 1/2

si x 0 si x < 0

x + 1/2 = E(x + 1/2) si x 0 x − 1/2 = E(x − 1/2) si x < 0

Para evitar sesgos en el tratamiento de los números de M, se suele usar en la práctima la regla de redondeo conocidad como “bancaria” o “gaussiana”, R2 , según la cual se redondean siempre losvalores de M a números pares. De forma simétrica podemos definir una regla R1 que redondee M a números impares: R2 (x) = R1 (x) = 2 x+1/2 2 R(x) = R0 (x) = R+∞ = R−∞ 2 x−1/2 + 1 2 R(x) = R0 (x) = R+∞ = R−∞ si x ∈ M si x ∈ M si x ∈ M si x ∈ M

round.w

2 / 19

Redondeo numérico y lenguajes de programación

Javier Goizueta 2001–2004

Ruby: Python: ECMAScript: Java: C# (.NET): Mathematica:RPL (HP48,HP49): Visual Basic: Fortran: Pascal:

x.round= R(x) round(x)= R(x) Math.round(x)= R(x) java.lang.Math.round(x)= R+∞ (x) System.Math.Round(x)= R2 (x) Round[x]= R2 (x) x 0 RND= R(x) Round(x)= R2 (x) ANINT(x)= R(x) Round(x)= R2 (x)
4 4 2 2 -4 -2 -2 -2 -4 -4 2 4

-4

-2

2

4

R+∞ (x)

R−∞ (x)

4 4 2 2

-4

-2

2

4

-4

-2 -2

2

4

-2 -4 -4

R0 (x)...
tracking img