ilovecer Postado Maio 9, 2011 Denunciar Share Postado Maio 9, 2011 Olá!Estou com uma imensa dúvida...O seguinte exercicio foi proposto:Reescreva o programa acima, agora exibindo as raízes quadradas de 2, com intervalos de 0,2, até que araiz seja maior que 2.Eu pensei , tranquilo.Escrevi:import mathimport localeprint 'Número', ' Raiz quadrada'i=2.0while math.sqrt(i) <= 2: print locale.format('%4.1f',i), \ locale.format('%14.8f',math.sqrt(i)) i = i + 0.2[/codebox]Mas na hora de executar o programa obtenho[codebox]Número Raiz quadrada 2.0 1.41421356 2.2 1.48323970 2.4 1.54919334 2.6 1.61245155 2.8 1.67332005 3.0 1.73205081 3.2 1.78885438 3.4 1.84390889 3.6 1.89736660 3.8 1.94935887Por que não houve o print do número 4 e sua raíz?Agradeço desde já! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kakao Postado Maio 9, 2011 Denunciar Share Postado Maio 9, 2011 (editado) O problema é que o float 4.0 não é exatamente 4.0. Para você ver o valor que está sendo usado no float rode assim:from math import sqrt from locale import format i = 2.0 while sqrt(i) <= 2: print format('%4.1f',i), format('%14.8f',sqrt(i)) i = i + 0.2 print 'i = %s, sqrt(i) = %s' % (repr(i), repr(sqrt(i))) Veja que o valor de i na última execução é 4.0000000000000018. Para ter valores exatos use o tipo Decimal: from decimal import Decimal from math import sqrt from locale import format print 'Número', ' Raiz quadrada' i = Decimal(2) j = Decimal('0.2') while sqrt(i) <= 2: print format('%4.1f',i), format('%14.8f',sqrt(i)) i = i + j Editado Maio 9, 2011 por Kakao Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ilovecer Postado Maio 9, 2011 Autor Denunciar Share Postado Maio 9, 2011 Mestre. Kakao , muito obrigado por sua ajuda , duvida totalmente sanada.Pensei que eu estava tendo uma interpretação errada do comando e isso estava me intrigando muito!Novamente , obrigado :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ilovecer
Olá!
Estou com uma imensa dúvida...
O seguinte exercicio foi proposto:
Reescreva o programa acima, agora exibindo as raízes quadradas de 2, com intervalos de 0,2, até que a
raiz seja maior que 2.
Eu pensei , tranquilo.Escrevi:
Mas na hora de executar o programa obtenho
2.0 1.41421356
2.2 1.48323970
2.4 1.54919334
2.6 1.61245155
2.8 1.67332005
3.0 1.73205081
3.2 1.78885438
3.4 1.84390889
3.6 1.89736660
3.8 1.94935887
Por que não houve o print do número 4 e sua raíz?
Agradeço desde já!
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.