"
Apoiado por

Matemática problemática

Sabes a diferença entre um mistério e um enigma? Num enigma sabe-se que há uma solução mas esta não é conhecida; já num mistério, não se sabe se haverá solução.

Concordas com isto?
5 * 3 / 10 = ( 5 * 3 ) / 10 = 5 * ( 3 / 10 ) = 1.5

Se não concordas, devias concordar porque é um facto matemático.

Mas vamos lá fazer umas experiências.

Experimenta correr o seguinte código:


DATA val TYPE i.
val = ( 5 * 3 ) / 10.
WRITE val.

O resultado no ecrã é 1. Porquê?
Simples. Porque a variável é do tipo integer e por isso só guarda a parte inteira. Se mudares o tipo da variável de integer para float, alívio, o ecrã já mostra 1.5.

Experimenta agora correr o seguinte código:


DATA val TYPE i.
val = 5 * ( 3 / 10 ).
WRITE val.

O resultado no ecrã é 0.
Estaremos nós perante um mistério? Ou apenas um enigma?

Sei de pessoas que começaram a acreditar em Deus por menos!

Mas o que se passa aqui é simples. É que em ABAP os resultados dos cálculos intermédios, neste caso a divisão 3/10, são igualmente guardados numa variável inteira. Ou seja: 3/10=0.333 convertido para inteiro fica 0. Depois 5*0=0. Mais uma vez, se a variável fosse do tipo float o resultado seria 1.5.

Pronto. Está o enigma resolvido.
Ufa! Não era nenhum mistério afinal.

Obrigado Miguel Jorge.

O Abapinho saúda-vos.

2 comentários a “Matemática problemática”

  1. Joao Diz:

    Deus abençoe.

  2. Joao Diz:

    Deus abençoe!

Deixe um comentário


Acerca do Abapinho
O Abapinho é suportado pelo WordPress
Artigos (RSS) e Comentários (RSS).