Problema de arredondamento com tipo duplo [duplicado]

Possível duplicado:
Por que as operações com valores de precisão dupla não fornecem os resultados esperados?

Estou com um problema peculiar em C ++. Eu criei uma variável do tipo Double. Depois, fiz alguns cálculos com alguns valores atribuídos a outras variáveis e atribui o resultado à variável dupla que declarei. Isso me deu um resultado com uma parte decimal longa. Quero arredondar para apenas 2 casas decimais. e armazene-o na variável Mas, mesmo após várias tentativas de arredondamento, não consegui arredondá-lo para duas casas decimais.

Então tentei outra maneira de verificar qual é o verdadeiro problema. Criei uma variável Double e atribuí a ela o valor 1.11. Mas quando eu depurei isso colocando um ponto de interrupção e adicionei um relógio para essa variável, eu pude descobrir que o valor agora armazenado na variável é 1.109999999999.

Minha pergunta é: por que está aparecendo assim? Não existe uma maneira de arredondar a variável em duas casas decimais? Por que está mostrando uma parte decimal longa, mesmo se atribuirmos um número com apenas duas casas decimais?

Por favor, sugira uma maneira de armazenar números - calculados ou atribuídos diretamente - como estão, em uma variável dupla ao invés de um número com uma parte decimal longa.

questionAnswers(3)

yourAnswerToTheQuestion