Fórum Erro na multiplicação entre double e integer #61712
07/02/2006
0
Olá grupo,
Alguém sabe me explicar porque o exemplo abaixo não retorna o valor correto da multiplicação?
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.
Alguém sabe me explicar porque o exemplo abaixo não retorna o valor correto da multiplicação?
1 2 3 | 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
Curtir tópico
+ 0
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;
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)