Как округлить до 2 десятичных знаков в Python?
Я получаю слишком много знаков после запятой в выводе этого кода (конвертер Фаренгейта в Цельсий).
Мой код сейчас выглядит следующим образом:
def main():
printC(formeln(typeHere()))
def typeHere():
global Fahrenheit
try:
Fahrenheit = int(raw_input("Привет! Введите значение в Фаренгейтах, и получите его в Цельсиях!\n"))
except ValueError:
print "\nВаш ввод не является числом!"
print "Мы установили ваше значение в Фаренгейтах на 50!"
Fahrenheit = 50
return Fahrenheit
def formeln(c):
Celsius = (Fahrenheit - 32.00) * 5.00 / 9.00
return Celsius
def printC(answer):
answer = str(answer)
print "\nВаше значение в Цельсиях: " + answer + " C.\n"
main()
Так что мой вопрос: как можно сделать так, чтобы программа округляла каждый ответ до второго знака после запятой?
5 ответ(ов)
Вы можете использовать функцию round
.
round(80.23456, 3)
возвращает результат 80.234.
В вашем случае используйте
answer = str(round(answer, 2))
Если вам нужно избежать проблем с плавающей точкой при округлении чисел для бухгалтерских расчетов, вы можете использовать функцию округления из библиотеки numpy.
Для начала установите numpy:
pip install numpy
Затем можете использовать следующий код:
import numpy as np
print(round(2.675, 2))
print(float(np.round(2.675, 2)))
Этот код выведет:
2.67
2.68
Рекомендуется использовать numpy для управления денежными средствами и легкого округления.
Вы можете использовать следующую строку кода для округления числа до двух знаков после запятой и его преобразования в тип float
:
float(str(round(answer, 2)))
Однако есть более простой способ получить число с нужной точностью без преобразования его в строку и обратно. Вместо этого вы можете использовать форматирование чисел. Вот пример:
answer = 0.0556781255
rounded_answer = round(answer, 2)
print(rounded_answer) # Вывод: 0.06
Если вас интересует именно значение 0.06
с типом float
, то round
уже возвращает число в этом формате. Таким образом, вы можете просто делать так:
answer = 0.0556781255
result = round(answer, 2) # результат будет 0.06 как float
В результате, вам не нужно делать преобразование в строку для округления.
Если вам нужно не только округлить результат, но и выполнять математические операции с округленным значением, вы можете использовать decimal.Decimal
. Более подробную информацию можно найти в документации.
Пример использования:
from decimal import Decimal, ROUND_DOWN
rounded_value = Decimal('7.325').quantize(Decimal('.01'), rounding=ROUND_DOWN)
print(rounded_value) # Вывод: 7.32
В этом примере мы сначала создаем объект Decimal
с значением 7.325
, затем округляем его до двух знаков после запятой с помощью метода quantize
, используя режим округления ROUND_DOWN
. Таким образом, получаем результат 7.32
, с которым можно далее выполнять математические операции.
В вашем коде происходит округление значения с использованием библиотеки decimal
в Python. Вы создаете объект Decimal
, представляющий значение 16.0/7
, и затем округляете его до двух десятичных знаков с помощью метода quantize
. Для этого вы используете округление ROUND_HALF_UP
, которое означает, что если число находится ровно посередине между двумя возможными значениями, то оно будет округлено вверх.
Ниже приведен исправленный код, который также учитывает правильный синтаксис для вывода в Python 3:
from decimal import Decimal, ROUND_HALF_UP
# Здесь представлены все возможные варианты округления:
# ROUND_05UP ROUND_DOWN ROUND_HALF_DOWN ROUND_HALF_UP
# ROUND_CEILING ROUND_FLOOR ROUND_HALF_EVEN ROUND_UP
our_value = Decimal(16.0/7)
output = our_value.quantize(Decimal('.01'), rounding=ROUND_HALF_UP)
print(output)
При выполнении этого кода значение our_value
будет округлено до двух знаков после запятой, и результат будет напечатан на экране. Если у вас возникнут дополнительные вопросы по округлению или использованию библиотеки decimal
, не стесняйтесь спрашивать!
Как клонировать список, чтобы он не изменялся неожиданно после присваивания?
Преобразование списка словарей в DataFrame pandas
Как отсортировать список/кортеж списков/кортежей по элементу на заданном индексе
Как отменить последнюю миграцию?
Как явно освободить память в Python?