返回值最多5位小数

时间:2019-04-07 04:00:08

标签: python decimal

我定义了一个函数总体密度并返回该值。如何定义函数并将值限制为5个小数?

#write your function here:
def population_density(population, area):
    calc = (population/area)
    return(calc)


# test cases for your function
test2 = population_density(864816, 121.4)
expected_result2 = 7123.6902801
print("expected re`strong text`sult: {}, actual result: {}".format(expected_result2, 
test2))

3 个答案:

答案 0 :(得分:2)

您可以使用round函数来做到这一点!

def population_density(population, area):
   calc = population/area
   return round(calc, 5)

答案 1 :(得分:1)

快速注释:Python中的舍入可能并不总是能按预期进行。谨慎操作。

我认为round(number[, ndigits])函数在这里最简单。对于您的情况,您似乎希望始终将其舍入到5位小数。我们可以在返回值中强制这样做:

def population_density(population, area):
                calc = (population/area)
                return(round(calc, 5))

或者,出于各种原因,您可能需要指定要舍入的位数。我们可以使用新参数round_来完成此操作:

def population_density(population, area, round_):
                calc = (population/area)
                return(round(calc, round_))

您可以在此处详细了解round()https://docs.python.org/3/library/functions.html#round

正如您将在文档中看到的那样,当值以您不期望的方式取整时,

  

这不是一个错误:这是由于大多数小数部分不能完全以浮点数表示的结果。

答案 2 :(得分:0)

最好使用decimal.Decimal,以免损失精度。

>>> from decimal import Decimal
>>> a = Decimal('7123.6902801')
>>> round(a, 5)
Decimal('7123.69028')

如果您只想打印,则可以将其格式化为某些小数位,而无需更改/创建值:

>>> "{0:.5f}".format(Decimal('7123.6902801'))