126 votes

Comment calculer la racine carrée en Python ?

Pourquoi Python donne-t-il la "mauvaise" réponse ?

 x = 16

sqrt = x**(.5)  #returns 4
sqrt = x**(1/2) #returns 1

Oui, je connais import math et j'utilise sqrt . Mais je cherche une réponse à ce qui précède.

277voto

smessing Points 1188

sqrt=x**(1/2) effectue une division entière. 1/2 == 0 .

Vous calculez donc x (1/2) dans le premier cas, x (0) dans le second.

Donc ce n'est pas faux, c'est la bonne réponse à une question différente.

27voto

whisperer Points 341
import math
math.sqrt( x )

C'est un ajout trivial à la chaîne de réponse. Cependant, étant donné que le sujet est très répandu sur Google, cela mérite d'être ajouté, je pense.

14voto

Niklas B. Points 40619

/ effectue une division entière en Python 2 :

 >>> 1/2
0

Si l'un des nombres est un flottant, cela fonctionne comme prévu :

 >>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0

7voto

gfortune Points 1749

Ce que vous voyez est une division entière. Pour obtenir une division en virgule flottante par défaut,

 from __future__ import division

Ou, vous pouvez convertir 1 ou 2 de 1/2 en une valeur à virgule flottante.

 sqrt = x**(1.0/2)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X