Erro na multiplicação entre double e integer

Delphi

07/02/2006

Olá grupo,

Alguém sabe me explicar porque o exemplo abaixo não retorna o valor correto da multiplicação?

    double valor = 26.2;
    int Teste = valor * 10;
    Caption = IntToStr(Teste);


A multiplicação de 26.2 por 10 retorna 261 e não 262. Com 26.3 não acontece, com 26.4 acontece, com 26.5 e 26.6 não acontece, com 26.7 acontece e assim por diante.

Troquei o tipo da variável de double para float e funcionou normalmente. Alguem poderia me ajudar?

Utilizo BCB 6.0.


Rodc

Rodc

Curtidas 0

Respostas

Pcesarfe

Pcesarfe

07/02/2006

Como em C++ não existe função para arredondar, você pode fazer o seguinte:

Depois de ter calculado valor, long ou float, faça:
valor = valor + 0.5;
depois mova para o inteiro para truncar o valor arredondado
inteiro = valor;
se valor tiver sinal, você tem que incluir: #include <cmath> e fazer
long x = abs(valor) + 0.5;
inteiro = x;


GOSTEI 0
POSTAR