Cosa restituire print (-2 ** 2)
? Secondo i miei calcoli dovrebbe essere 4
, ma l'interprete restituisce -4
.
Questa cosa di Python o la mia matematica è così terribile?Errore di calcolo con l'operatore Pow
risposta
Secondo docs, **
ha precedenza superiore a -
, pertanto il codice è equivalente a -(2 ** 2)
. Per ottenere il risultato desiderato si potrebbe mettere -2
in parentesi
>>> (-2) ** 2
4
o utilizzare built-in pow
function
>>> pow(-2, 2)
4
o math.pow
funzione (ritorno float
valore)
>>> import math
>>> math.pow(-2, 2)
4.0
L'operazione **
è fatto prima del meno. Per ottenere i risultati attesi, si dovrebbe fare
print ((-2) ** 2)
Così, in una sequenza di unparenthesized di potenza e operatori unari, gli operatori vengono valutati da destra a sinistra (questo non forza la ordine di valutazione per gli operandi):
-1**2
risultati in-1
.
Un completo detail of operators precedence è disponibile anche nella documentazione. Si può vedere l'ultima riga è (expr)
che costringono l'espr da valutare prima di essere utilizzato, quindi il risultato di (-2) ** 2 = 4
è anche possibile utilizzare libreria matematica ...
math.pow(-2,2) --> 4
-math.pow(2,2) --> -4
math.pow(4,0.5) --> 2
Python ha un problema e lo fa non vedere il -2 come un numero. Questo sembra essere di progettazione come è menzionato nei documenti.
-2 viene interpretato come - (2) {meno unario al numero positivo 2}
Che di solito non dà un problema, ma in -a ** 2 ** l'ha la priorità maggiore, come - e così con - interpretato come unario operatoe invece di una parte del numero -2 ** 2 valuta a -2 anziché 2.
- 1. Utilizzo di NGrok con POW
- 2. Errore di calcolo delle funzioni
- 3. sizeof errore membro di calcolo
- 4. GCC C++ precisione Pow
- 5. Errore calcolo differenza giorni PHP
- 6. Funzione GLSL pow?
- 7. pitone: errore di tipo nel calcolo dell'hash
- 8. pow() sollevamento a float
- 9. manipolazione in GMP pow
- 10. Prestazioni Pow() vs. exp()
- 11. Pow e VMware Fusion
- 12. pow negativo in python
- 13. somma di calcolo con PHPExcel
- 14. constexpr versus template, pow function
- 15. efficiente calcolo di una potenza di 2
- 16. Funzione pow() senza librerie matematiche
- 17. cos'è "riferimento non definito a" pow "'
- 18. unsigned long long int pow
- 19. Calcolo di Pi con decimale su Python
- 20. Cosa è più veloce di std :: pow?
- 21. Variabile d'ambiente nella console Rails e Pow
- 22. Come posso usare pow() & sqrt() su UNIX?
- 23. Calcolo del volume per sfera in C++
- 24. Rails 3.2.8 - Condividi Devise Sessions attraverso i sottodomini con POW
- 25. Rails: Come ottenere paralleli in esecuzione con Pow
- 26. Perché pow (-infinity, positivo non intero) + infinito?
- 27. Servizio Errore: fogli di calcolo su Google Script
- 28. Modalità di calcolo esclusiva con OpenCL + NVidia
- 29. Chiamata ambigua a funzione sovraccaricata 'pow'
- 30. errore nel calcolo tensorflow croce perdita di entropia
Si dovrebbe fare (-2) ** 2 invece – sshashank124
Il '-' ha priorità inferiore di' ** '. Questo è interpretato come - (2 ** 2), non (-2) ** 2 ... – l4mpi
La ragione principale che confonde la maggior parte delle persone è che si aspettano che '-2' sia un significato letterale" negativo 2 ", non un'espressione che significa "applica l'operatore di negazione al letterale 2 in fase di esecuzione". Una volta compreso che si tratta di un operatore, il fatto che si tratti di un problema di precedenza è ovvio; finché non lo fai, è sconcertante. (Ecco perché tutte le persone che vi si imbattono sono confuse da -2 ** 2', non '-x ** 2'.) – abarnert