Array
(
)

Erro na multiplicação entre double e integer

Rodc
   - 07 fev 2006

Olá grupo,

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

#Código

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.


Pcesarfe
   - 13 ago 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;