Python 3.0'daki Yenilikler'i yeniden okuyordum ve şöyle diyor:
Round () işlevi yuvarlama stratejisi ve dönüş türü değişti. Kesin yarım vakalar şimdi sıfırdan ziyade en yakın çift sonuca yuvarlanıyor. (Örneğin, yuvarlak (2.5) artık 3 yerine 2 döndürüyor.)
ve tur için belgeler :
Round () özelliğini destekleyen yerleşik türler için, değerler güç eksi n'nin 10 en yakın katına yuvarlanır; iki kat eşit derecede yakınsa, yuvarlama eşit seçeneğe doğru yapılır
Yani, v2.7.3 altında :
In [85]: round(2.5)
Out[85]: 3.0
In [86]: round(3.5)
Out[86]: 4.0
beklediğim gibi. Ancak, şimdi v3.2.3 altında :
In [32]: round(2.5)
Out[32]: 2
In [33]: round(3.5)
Out[33]: 4
Bu, sezgisel ve yuvarlama hakkında anladığımın aksine (ve insanları gezmeye bağlı) görünüyor. İngilizce benim ana dilim değil ama bunu okuyana kadar yuvarlamanın ne anlama geldiğini bildiğimi düşündüm: - / Eminim v3 tanıtıldığında bunun tartışılması gerekiyordu, ama bunun için iyi bir neden bulamadım aramam.
- Bunun neden bu şekilde değiştirildiğini bilen var mı?
- Bu tür (benim için tutarsız) yuvarlama yapan başka ana programlama dilleri (örneğin, C, C ++, Java, Perl, ..) var mı?
Burada ne eksik?
GÜNCELLEME: @ Li-aungYip'in "Banker yuvarlama" yorumu yeniden bana doğru arama terimi / anahtar kelimeler verdi ve ben bu SO soru bulundu: .NET neden banker yuvarlama varsayılan olarak kullanıyor? , bu yüzden dikkatlice okuyacağım.