Stavo solo rileggendo le novità di Python 3.0 e afferma:
La strategia di arrotondamento della funzione round () e il tipo di ritorno sono cambiati. I casi a metà esatta sono ora arrotondati al risultato pari più vicino anziché a zero. (Ad esempio, round (2.5) ora restituisce 2 anziché 3.)
e la documentazione per round :
Per i tipi integrati che supportano round (), i valori sono arrotondati al multiplo più vicino di 10 alla potenza meno n; se due multipli sono ugualmente vicini, l'arrotondamento viene effettuato verso la scelta pari
Quindi, sotto v2.7.3 :
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
come mi sarei aspettato. Tuttavia, ora sotto v3.2.3 :
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
Questo sembra contro-intuitivo e contrario a quello che capisco sull'arrotondamento (e destinato a inciampare). L'inglese non è la mia lingua madre, ma fino a quando non ho letto questo ho pensato di sapere cosa significasse arrotondamento: - / Sono sicuro che al momento dell'introduzione della v3 ci fosse stata qualche discussione su questo, ma non sono riuscito a trovare una buona ragione in la mia ricerca.
- Qualcuno ha un'idea del perché questo è stato cambiato in questo?
- Esistono altri linguaggi di programmazione tradizionali (ad es. C, C ++, Java, Perl, ..) che eseguono questo tipo di arrotondamento (per me incoerente)?
Cosa mi sto perdendo qui?
AGGIORNAMENTO: Il commento di @ Li-aungYip su "Arrotondamento del banco" mi ha dato il termine di ricerca / le parole chiave giuste da cercare e ho trovato questa domanda SO: Perché .NET utilizza l'arrotondamento del banco come predefinito? , quindi lo leggerò attentamente.