¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Por que o resultado é 9.2249999999999999E-01 em vez de 9.225E-01: Explicação detalhada

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

Olá,

Alguém pode me explicar por que o resultado abaixo é 9.2249999999999999E-01, e não 9.225E-01?

DADOS: 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...

Olá Jiangang You,

DADOS: l_calc_base TIPO f.

l_calc_base = ( 2008 - 163 ) / 2000.

O resultado é 9.2249999999999999E-01

Números de Punto Flotante


O tipo de dados para números de ponto flutuante f tem um intervalo de valores de 2,2250738585072014E-308 a 1,7976931348623157E+308, positivos e negativos, e o número 0, com uma precisão de pelo menos 15 casas decimais.


Você não pode inserir números de ponto flutuante diretamente em seu programa. Em vez disso, você deve usar literais de texto que podem ser interpretados como números de ponto flutuante, ou seja, contêm um número em notação científica . Notação matemática ou notação comercial não são permitidas a menos que possam ser interpretadas como notação científica.

As expressões aritméticas com tipo de cálculo f são realizadas utilizando aritmética de ponto flutuante . Use isso se precisar de um intervalo de valores muito grande ou estiver realizando cálculos decimais, mas leve em consideração as seguintes características da aritmética de ponto flutuante.

Internamente, o expoente e a mantissa dos números de ponto flutuante são armazenados separadamente, cada um em duas partes. Isso pode levar a resultados inesperados, apesar do alto grau de precisão intrínseca. Isso ocorre principalmente ao realizar conversões de e para o tipo f .

  • Por exemplo, o número 1.5 pode ser representado exatamente nesta notação, pois 1.5 = 1*2**0 + 1*2**(-1), mas o número 0.15 só pode ser representado aproximadamente pelo número 0,14999999999999999. Se você arredondar 0.15 para cima para 1 dígito válido, o resultado é 0.1 em vez de 0.2 que você esperaria. Por outro lado, o número 1,5E-12 é representado pelo número 1,5000000000000001E-12, que seria arredondado para cima para 2E-12.

  • Outro exemplo que ocorreu na realidade é o cálculo de 7.27% de 73050 com uma precisão de 2 casas decimais. O resultado intermediário é 5.3107349999999997E+03, já que o resultado correto, 5310.735 não pode ser representado exatamente em duas partes com 53 bits. (Se
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá

Aqui está o que diz a documentação do ABAP.

  • Números de ponto flutuante - tipo F

O intervalo de valores dos números do tipo F vai de 1x10**-307 a 1x10**308 para números positivos e negativos, incluindo 0 (zero). A faixa de precisão é de aproximadamente 15 casas decimais, dependendo da aritmética de ponto flutuante da plataforma de hardware. Como os dados do tipo F são convertidos internamente para um sistema binário, erros de arredondamento podem ocorrer. Embora o processador ABAP tente minimizar esses efeitos, não se deve usar dados do tipo F se alta precisão for necessária. Em vez disso, use dados do tipo P.

É mencionado claramente que a precisão ao usar o tipo F é de aproximadamente 15 casas decimais.

Saudações,

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?