如何在python中将数字向上舍入到x小数位?

时间:2018-05-18 06:25:19

标签: python

我想在python中取消一个数字到2位小数?我怎样才能做到这一点?我尝试了几件事,但都失败了。

所以

  • ( - 0.012803683)将为-0.02
  • 0.478078191将为0.48
  • 0.450779926将为0.46

这个问题是关于综合的,这与圆整

更为不同

3 个答案:

答案 0 :(得分:1)

以下功能适用于您的所有示例

def roundup(x, places):
  d = 10 ** places
  if x < 0:
    return math.floor(x * d) / d
  else:
    return math.ceil(x * d) / d

>>> roundup(-0.012803683, 2)
-0.02
>>> roundup(0.478078191, 2)
0.48
>>> roundup(0.450779926, 2)
0.46

答案 1 :(得分:1)

你可以试试这个:

import decimal

num = decimal.Decimal(-0.012803683).quantize(
          decimal.Decimal('.01'), rounding=decimal.ROUND_UP)
print(num)

答案 2 :(得分:1)

from math import ceil
a=-0.012803683
A=ceil(a*100)/100

我就是这样做的,但是虽然这对你的正数很有用,但是对于我在abouve代码中输入的数字,它给出了A = -0.01。向上舍入-0.012803683会给你-0.01,那是一个错误的例子吗?或者,如果它是一个负数,你想要向下舍入吗?

from math import ceil
Round=lambda a:ceil(a*100)/100

允许你这样做:

>>> Round(-0.012803683)
-0.01
>>> Round(0.478078191)
0.48
>>> Round(0.450779926)
0.46