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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar