Вопрос-Ответ

How to round to 2 decimals with Python? [duplicate]

Как округлить до 2 десятичных знаков с помощью Python?

Я получаю много десятичных знаков на выходе этого кода (конвертер Фаренгейта в Цельсий).

Мой код в настоящее время выглядит следующим образом:

def main():
printC(formeln(typeHere()))

def typeHere():
global Fahrenheit
try:
Fahrenheit = int(raw_input("Hi! Enter Fahrenheit value, and get it in Celsius!\n"))
except ValueError:
print "\nYour insertion was not a digit!"
print "We've put your Fahrenheit value to 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 "\nYour Celsius value is " + answer + " C.\n"



main()

Итак, мой вопрос в том, как мне заставить программу округлять каждый ответ до 2-го знака после запятой?

Переведено автоматически
Ответ 1

Вы можете использовать round функцию, которая принимает в качестве первого аргумента число, а вторым аргументом является точность после запятой.

В вашем случае это было бы:

answer = str(round(answer, 2))
Ответ 2

Использование str.format()синтаксиса для отображения answer с двумя десятичными знаками (без изменения базового значения answer):

def printC(answer):
print("\nYour Celsius value is {:0.2f}ºC.\n".format(answer))

Где:


  • : представляет спецификацию формата

  • 0 включает заполнение нулем с учетом знака для числовых типов

  • .2 устанавливает точность в 2

  • f отображает число в виде числа с фиксированной запятой

Ответ 3

Большинство предложенных ответов round или format. round иногда округляется в большую сторону, и в моем случае мне нужно было, чтобы значение моей переменной округлялось в меньшую сторону, а не просто отображалось как таковое.

round(2.357, 2)  # -> 2.36

Я нашел ответ здесь: Как мне округлить число с плавающей запятой до определенного десятичного знака?

import math
v = 2.357
print(math.ceil(v*100)/100) # -> 2.36
print(math.floor(v*100)/100) # -> 2.35

или:

from math import floor, ceil

def roundDown(n, d=8):
d = int('1' + ('0' * d))
return floor(n * d) / d

def roundUp(n, d=8):
d = int('1' + ('0' * d))
return ceil(n * d) / d
Ответ 4

Если вы просто хотите распечатать округленный результат, вы можете использовать f-строки, представленные начиная с Python 3.6. Синтаксис такой же, как у str.format()синтаксиса форматной строки, за исключением того, что вы ставите f перед буквенной строкой и помещаете переменные непосредственно в строку, в фигурные скобки.

.2f указывает на округление до двух знаков после запятой:

number = 3.1415926
print(f"The number rounded to two decimal places is {number:.2f}")

Вывод:

The number rounded to two decimal places is 3.14
python