Круглий ()
Round () - це вбудована функція, доступна з python. Він поверне вам плаваюче число, яке буде округлено до десяткових знаків, які вказані як вхідні дані.
Якщо десяткові коми, які потрібно округлити, не вказані, це вважається 0, і воно буде округлено до найближчого цілого числа.
У цьому посібнику з Python ви дізнаєтесь:
- Круглий ()
- Синтаксис:
- Скільки впливу може мати округлення? (Округлення проти скорочення)
- Приклад: округлення плаваючих чисел
- Приклад: Округлення цілих значень
- Приклад: Округлення на від’ємні числа
- Приклад: Круглі масиви Numpy
- Приклад: Десятковий модуль
Синтаксис:
round(float_num, num_of_decimals)
Параметри
- float_num: номер плаваючого для округлення.
- num_of_decimals: (необов’язково) Кількість десяткових знаків, які слід враховувати під час округлення. Це необов’язково, і якщо не вказано, воно за замовчуванням дорівнює 0, і округлення виконується до найближчого цілого числа.
Опис
Метод round () приймає два аргументи
- число, яке потрібно округлити та
- десяткові коми, які слід враховувати при округленні.
Другий аргумент є необов'язковим і за замовчуванням дорівнює 0, якщо не вказаний, і в такому випадку він округляється до найближчого цілого числа, а тип повернення також буде цілим числом.
Коли є десяткові знаки, тобто другий аргумент, він буде округлятися до кількості поданих місць. Тип повернення буде float.
Якщо вказано число після десяткової коми
- > = 5 ніж + 1 буде додано до остаточного значення
- <5, ніж поверне кінцеве значення, оскільки воно сягає згаданих знаків після коми.
Повернене значення
Він поверне цілочисельне значення, якщо не вказано числові_десяткові числа, і плаваюче значення, якщо вказано числове_десяткове число. Зверніть увагу, що значення буде округлено до +1, якщо значення після десяткової коми дорівнює> = 5, інакше воно поверне значення, як і до згаданих знаків після коми.
Скільки впливу може мати округлення? (Округлення проти скорочення)
Найкращий приклад, що демонструє вплив округлення, - це фондовий ринок. У минулому, тобто в 1982 році, Ванкуверська фондова біржа (VSE): використовувала для усічення значень акцій до трьох знаків після коми на кожній угоді.
Це робилося майже 3000 разів на день. Накопичені усічення призводять до втрати близько 25 балів на місяць.
Приклад усічення значень проти округлення наведено нижче.
Розглянемо числа з плаваючою комою, що генеруються нижче, як запаси. Зараз я генерую його для цілого ряду
1000000 секунд між 0,01 і 0,05.
Приклади:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
Щоб показати вплив округлення, я написав невеликий фрагмент коду, в якому спочатку вам потрібно було використовувати числа до 3 знаків після коми, тобто усічення числа після 3 знаків після коми.
У мене є вихідне загальне значення, загальне значення, що надходить із усічених значень, і різниця між початковим та усіченим значенням.
На тому самому наборі чисел я використовував метод round () до 3 знаків після коми і обчислював суму та різницю між початковим значенням та округленим значенням.
Ось приклад і результати
Приклад 1
import randomdef truncate(num):return int(num * 1000) / 1000arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]sum_num = 0sum_truncate = 0for i in arr:sum_num = sum_num + isum_truncate = truncate(sum_truncate + i)print("Testing by using truncating upto 3 decimal places")print("The original sum is = ", sum_num)print("The total using truncate = ", sum_truncate)print("The difference from original - truncate = ", sum_num - sum_truncate)print("\n\n")print("Testing by using round() upto 3 decimal places")sum_num1 = 0sum_truncate1 = 0for i in arr:sum_num1 = sum_num1 + isum_truncate1 = round(sum_truncate1 + i, 3)print("The original sum is =", sum_num1)print("The total using round = ", sum_truncate1)print("The difference from original - round =", sum_num1 - sum_truncate1)
Вихід:
Testing by using truncating upto 3 decimal placesThe original sum is = 29985.958619386867The total using truncate = 29486.057The difference from original - truncate = 499.9016193868665Testing by using round() up to 3 decimal placesThe original sum is = 29985.958619386867The total using round = 29985.912The difference from original - round = 0.04661938686695066
Різниця між оригіналом та після усічення становить 499,9016193868665, а з круглих - 0,04661938686695066
Різниця, здається, дуже велика, і приклад показує, як метод round () допомагає підрахувати близьку до точності.
Приклад: округлення плаваючих чисел
У цій програмі ми побачимо, як відбувається округлення слів на плаваючі числа
# testing round()float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5print("The rounded value without num_of_decimals is :", round(float_num1))print("The rounded value without num_of_decimals is :", round(float_num2))print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2))print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))
Вихід:
The rounded value without num_of_decimals is : 11The rounded value without num_of_decimals is : 10The rounded value with num_of_decimals as 2 is : 10.35The rounded value with num_of_decimals as 2 is : 10.34
Приклад: Округлення цілих значень
Якщо ви випадково використовуєте round () для цілочисельного значення, він просто поверне вам число назад без будь-яких змін.
# testing round() on a integernum = 15print("The output is", round(num))
Вихід:
The output is 15
Приклад: Округлення на від’ємні числа
Побачимо кілька прикладів того, як округлення працює на від’ємні числа
# testing round()num = -2.8num1 = -1.5print("The value after rounding is", round(num))print("The value after rounding is", round(num1))
Вихід:
C:\pythontest>python testround.pyThe value after rounding is -3The value after rounding is -2
Приклад: Круглі масиви Numpy
Як округлити масиви numpy в python?
Для вирішення цієї проблеми ми можемо скористатися модулем numpy та використовувати метод numpy.round () або numpy.around (), як показано в прикладі нижче.
Використання numpy.round ()
# testing round()import numpy as nparr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323]arr1 = np.round(arr, 2)print(arr1)
Вихід:
C:\pythontest>python testround.py[-0.34 1.46 4.23 -0.34 7.63 5.12]
Ми також можемо використовувати numpy.around (), що дає той самий результат, що показано в прикладі нижче.
Приклад: Десятковий модуль
На додаток до функції round (), python має десятковий модуль, який допомагає точніше обробляти десяткові числа.
Десятичний модуль постачається з типами округлення, як показано нижче:
- ROUND_CEILING: він буде круглим до Нескінченності,
- ROUND_DOWN: він буде округляти значення до нуля,
- ROUND_FOOOR: він буде округлятися до -Бесконечності,
- ROUND_HALF_DOWN: він буде округлятися до найближчого значення, що йде до нуля,
- ROUND_HALF_EVEN: він буде округлятися до найближчого зі значенням, що йде до найближчого парного цілого числа,
- ROUND_HALF_UP: він буде округлятися до найближчого зі значенням, що відхиляється від нуля
- ROUND_UP: він буде округлятися там, де значення буде відходити від нуля.
У десятковому методі quantize () допомагає округлити до фіксованої кількості знаків після коми, і ви можете вказати округлення, яке буде використовуватися, як показано в прикладі нижче.
Приклад:
Використання методів round () та десяткової системи
import decimalround_num = 15.456final_val = round(round_num, 2)#Using decimal modulefinal_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING)final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN)final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR)final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN)final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN)final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP)final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP)print("Using round()", final_val)print("Using Decimal - ROUND_CEILING ",final_val1)print("Using Decimal - ROUND_DOWN ",final_val2)print("Using Decimal - ROUND_FLOOR ",final_val3)print("Using Decimal - ROUND_HALF_DOWN ",final_val4)print("Using Decimal - ROUND_HALF_EVEN ",final_val5)print("Using Decimal - ROUND_HALF_UP ",final_val6)print("Using Decimal - ROUND_UP ",final_val7)
Вихід:
Using round() 15.46Using Decimal - ROUND_CEILING 15.46Using Decimal - ROUND_DOWN 15.45Using Decimal - ROUND_FLOOR 15.45Using Decimal - ROUND_HALF_DOWN 15.46Using Decimal - ROUND_HALF_EVEN 15.46Using Decimal - ROUND_HALF_UP 15.46Using Decimal - ROUND_UP 15.46
Короткий зміст:
- Round (float_num, Num_of_decimals) - це вбудована функція, доступна з python. Він поверне вам плаваюче число, яке буде округлено до десяткових знаків, які вказані як вхідні дані.
- float_num: номер плаваючого для округлення.
- Num_of_decimals: це кількість десяткових знаків, яка враховується під час округлення.
- Він поверне цілочисельне значення, якщо не вказано числові_десяткові числа, і плаваюче значення, якщо вказано числове_десяткове число.