Wie kann ich die Quadratwurzel in Python berechnen?
Warum gibt Python die "falsche" Antwort?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
Ja, ich kenne import math
und verwende sqrt
. Aber ich bin auf der Suche nach einer Antwort auf die obige Frage.
122
3
sqrt=x**(1/2)
ist eine ganzzahlige Division.1/2 == 0
.Du berechnest also x(1/2) im ersten Fall, x(0) im zweiten Fall.
Es ist also nicht falsch, es ist die richtige Antwort auf eine andere Frage.
Sie müssen schreiben:
sqrt = x**(1/2.0)
, sonst wird eine ganzzahlige Division durchgeführt und der Ausdruck1/2
ergibt0
.Dieses Verhalten ist "normal" in Python 2.x, während in Python 3.x
1/2
zu0.5
ausgewertet wird. Wenn Sie wollen, dass sich Ihr Python 2.x Code wie 3.x in Bezug auf Division verhält, schreiben Siefrom __future__ import division
- dann wird1/2
zu0.5
ausgewertet und aus Gründen der Abwärtskompatibilität wird1//2
zu0
ausgewertet.Und für das Protokoll, der bevorzugte Weg, um eine Quadratwurzel zu berechnen ist dies:
/
führt eine ganzzahlige Division in Python 2 durch:Wenn eine der Zahlen eine Fließkommazahl ist, funktioniert es wie erwartet: