Erro na multiplicação entre double e integer

07/02/2006

0

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

Responder

Posts

13/08/2006

Pcesarfe

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;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar