¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Por qué el resultado es 9.2249999999999999E-01 en lugar de 9.225E-01: Explicación detallada

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 9 Vistas
0
Cargando...

Hola,

¿Alguien puede explicarme por qué el resultado a continuación es 9.2249999999999999E-01, y no 9.225E-01?

DATOS: l_calc_base TIPO f.

l_calc_base = ( 2008.00 - 163.00 ) / 2000.00.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

Hi Jiangang You,

DATA: l_calc_base TYPE f.

l_calc_base = ( 2008 - 163 ) / 2000.

Result is 9.2249999999999999E-01

Números de Punto Flotante


El tipo de datos para números de punto flotante f tiene un rango de valores de 2,2250738585072014E-308 a 1,7976931348623157E+308, positivos y negativos, y el número 0, con una precisión de al menos 15 lugares decimales.


No puedes ingresar números de punto flotante directamente en tu programa. En su lugar, debes usar literales de texto que pueden ser interpretados como números de punto flotante, es decir, contienen un número en notación científica . Notación matemática o notación comercial no están permitidas a menos que puedan ser interpretadas como notación científica.

Las expresiones aritméticas con tipo de cálculo f se realizan utilizando aritmética de punto flotante . Utiliza esto si necesitas un rango de valores muy grande o estás realizando cálculos decimales, pero ten en cuenta las siguientes características de la aritmética de punto flotante.

Internamente, el exponente y la mantisa de los números de punto flotante se almacenan por separado, cada uno en dos partes. Esto puede llevar a resultados inesperados, a pesar del alto grado de precisión intrínseca. Estos ocurren principalmente al realizar conversiones desde y hacia el tipo f .

  • Por ejemplo, el número 1.5 puede representarse exactamente en esta notación ya que 1.5 = 1*2**0 + 1*2**(-1), pero el número 0.15 solo puede representarse aproximadamente por el número 0,14999999999999999. Si redondeas 0.15 hacia arriba a 1 dígito válido, el resultado es 0.1 en lugar de 0.2 que esperarías. Por otro lado, el número 1,5E-12 se representa por el número 1,5000000000000001E-12, que se redondearía hacia arriba a 2E-12.

  • Otro ejemplo que ocurrió en realidad es el cálculo del 7.27% de 73050 con una precisión de 2 lugares decimales. El resultado intermedio es 5.3107349999999997E+03, ya que el resultado correcto, 5310.735 no se puede representar exactamente en dos partes con 53 bits. (Si
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola

Aquí está lo que dice la documentación de ABAP.

  • Números de punto flotante - tipo F

El rango de valores de los números de tipo F es de 1x10**-307 a 1x10**308 para números positivos y negativos, incluyendo 0 (cero). El rango de precisión es de aproximadamente 15 decimales, dependiendo de la aritmética de punto flotante de la plataforma de hardware. Dado que los datos de tipo F se convierten internamente a un sistema binario, pueden ocurrir errores de redondeo. Aunque el procesador ABAP intenta minimizar estos efectos, no se debe usar datos de tipo F si se requiere alta precisión. En su lugar, use datos de tipo P.

Se menciona claramente que la precisión al usar tipo F es de aproximadamente 15 decimales.

Saludos,

Philip.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?