Кръгъл()
Round () е вградена функция, достъпна с python. Ще ви върне число с плаващо число, което ще бъде закръглено до десетичните знаци, които са дадени като вход.
Ако десетичните знаци, които трябва да се закръглят, не са посочени, той се счита за 0 и ще се закръгли до най-близкото цяло число.
В този урок за Python ще научите:
- Кръгъл()
- Синтаксис:
- Колко въздействие може да има закръгляването? (Закръгляване срещу съкращаване)
- Пример: Закръгляване на числа с поплавък
- Пример: Закръгляване на целочислени стойности
- Пример: Закръгляване на отрицателни числа
- Пример: кръгли масиви на Numpy
- Пример: Десетичен модул
Синтаксис:
round(float_num, num_of_decimals)
Параметри
- float_num: числото на плувката, което ще се закръгли.
- num_of_decimals: (по избор) Броят десетични знаци, които трябва да се вземат предвид при закръгляването. Той не е задължителен и ако не е посочен, по подразбиране е 0 и закръгляването се извършва до най-близкото цяло число.
Описание
Методът round () взема два аргумента
- числото, което ще се закръгли и
- десетичните знаци, които трябва да вземе предвид при закръгляване.
Вторият аргумент е по избор и по подразбиране е 0, когато не е посочен, и в такъв случай той ще се закръгли до най-близкото цяло число и типът на връщане също ще бъде цяло число.
Когато присъстват десетичните знаци, т.е. вторият аргумент, той ще се закръгли до броя на дадените места. Типът на връщане ще бъде плаващ.
Ако числото след дадения десетичен знак
- > = 5 от + 1 ще бъдат добавени към крайната стойност
- <5 от крайната стойност ще се върне, тъй като е до посочените десетични знаци.
Върната стойност
Той ще върне целочислена стойност, ако не е зададено числото_десетични числа и плаваща стойност, ако е дадено числото_десетични числа. Моля, обърнете внимание, че стойността ще бъде закръглена до +1, ако стойността след десетичната запетая е> = 5, иначе тя ще върне стойността, както е до посочените десетични знаци.
Колко въздействие може да има закръгляването? (Закръгляване срещу съкращаване)
Най-добрият пример за показване на въздействието на закръгляването е за фондовия пазар. В миналото, т.е. през 1982 г., Ванкувърската фондова борса (VSE): използва се за съкращаване на стойностите на акциите до три знака след десетичната запетая при всяка сделка.
Правеше се почти 3000 пъти всеки ден. Натрупаните отрязвания водят до загуба от около 25 точки на месец.
Пример за отрязване на стойностите спрямо закръгляване е показан по-долу.
Разгледайте числата с плаваща запетая, генерирани по-долу, като стойности на запасите. В момента го генерирам за диапазон от
1 000 000 секунди между 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
Разликата изглежда много голяма и примерът показва как методът за закръгляване () помага при изчисляването на близо до точността.
Пример: Закръгляване на числа с поплавък
В тази програма ще видим как закръгляване на думи върху плаващи числа
# 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
Как да закръглям масивни масиви в 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 () помага да се закръгли до фиксиран брой десетични знаци и можете да посочите закръгляването, което ще се използва, както е показано в примера по-долу.
Пример:
Използване на кръгли () и десетични методи
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: Това е броят на десетичните знаци, които трябва да се вземат предвид при закръгляването.
- Той ще върне целочислена стойност, ако не е зададено числото_десетични числа и плаваща стойност, ако е дадено числото_десетични числа.