round() funksiyası

  round() funksiyası verilmiş ədədi onluq vergüldən sonra göstərilmiş mərtəbəyə qədər yuvarlaqlaşdıraraq qaytarır.

Funksiyanın sintaksisi aşağıdakı kimidir:

round(number, ndigits)

   Burada number verilmiş həqiqi ədəd, ndigits isə onluq vergüldən sonra göstərilən mərtəbələrin sayıdır. İkinci parametr olan ndigits istəyə bağlı olaraq istifadə edilir, boş buraxıldıqda, yuvarlaqlaşdırma ən yaxın tam ədədə qədər aparılır. Əgər round() funksiyasına number olaraq tam ədəd verilsə, funksiya tam ədəd qaytaracaq.

Aşağıda round() funksiyasının istifadəsi ilə bağlı nümunələr verilmişdir:

>>> print(round(10.7))
11
>>> print(round(5.3))
5
>>> print(round(-5.7))
-6
>>> print(round(8))
8
>>>
>>> print(round(1.5))
2
>>> print(round(2.5))
2
>>>

   Yuxarıdakı misallardan sonuncusunun nəticəsi Sizi çaşdıra bilər. Deyəcəksiniz ki, axı nəticə 3 olmalıydı. Çünki riyaziyyatdan da bildiyimiz kimi hansı mərtəbəyə qədər yuvarlaqlaşdırılma tələb edilirsə, həmin mərtəbədəki rəqəmdən sağdakı rəqəm 4-dən böyükdürsə, qeyd olunan rəqəm bir vahid artırılır, əks halda isə rəqəm dəyişmir, bu rəqəmin sağındakı bütün rəqəmlər isə sıfırlarla əvəz edilir. Amma məsələ burasındadır ki, Python dilinin round() funksiyası riyazi deyil, bank yuvarlaqlaşdırması edir, yəni yuvarlaqlaşma ən yaxın cüt ədədə qədər aparılır.

   Aşağıdakı misallarda ndigits parametri istifadə edilir:

>>> print(round(2.56, 1))
2.6
>>> print(round(3.874, 2))
3.87
>>> print(round(2.665, 2))
2.67
>>> print(round(2.675, 2))
2.67
>>>

   Yenə də sonuncu misaldakı nəticə sürpriz oldu. Gözləyirdiniz ki, round(2.675, 2) funksiyası 2.68 verəcək, amma 2.67 verdi. Funksiyanın bu davranışı xəta deyil. Məsələ burasındadır ki, bir çox onluq kəsrləri dəqiqliklə həqiqi ədədlər kimi təsvir etmək mümkün deyil. Məsələn 2.675 onluq ədədi ikili sürüşkən vergüllü ədədə çevirdikdə, o ikili yaxınlaşma ilə əvəz olunur və dəqiq qiyməti aşağıdakı kimi olur:

2.67499999999999982236431605997495353221893310546875

   Məhz buna görə də yuvarlaqlaşdırmanın nəticəsi 2.67 olur.

   Dəqiqlik tələb olunan hallarda isə sürüşkən ədədlərlə işləmək üçün nəzərdə tutulan decimal modulundan istifadə etmək olar:

>>> from decimal import Decimal
>>> num = Decimal('2.675')
>>> print(round(num, 2))
2.68
>>>