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
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.
9 de dezembro de 2013 às 15:53
Deus abençoe.
9 de dezembro de 2013 às 15:54
Deus abençoe!