半圆形实施

时间:2017-05-14 13:32:28

标签: python python-2.7 math

只有当小数部分大于而不是一半时,Python中是否还有一种方法可以将数字四舍五入? roundmath.ceil会执行此操作:

round(X.5) => X+1
math.ceil(X.5) => X+1

然而,我想要这个:

x.500...000001 => x+1
x.500...000000 => x

怎么做?

我有2.7.13 python x64

4 个答案:

答案 0 :(得分:1)

math.ceil(x-0.5)

地图:

12.50 -> ceil(12.00) -> 12
12.49 -> ceil(11.99) -> 12
12.51 -> ceil(12.01) -> 13

答案 1 :(得分:0)

您可以这样做:

round(X - 0.00000000001)

您需要确定适当的小数位数,请记住浮点数不准确,因此例如10000000000000000000.5无法表示。

答案 2 :(得分:0)

我找到了jonrsharpe建议使用context的答案 这是我用它的方式:

from decimal import *
x =5.500000000000001   # it is the number wanted to round, however only takes 15 number after decimal for me
ctx= Context(prec=1, rounding=ROUND_HALF_DOWN)
y = ctx.create_decimal(x)  

然而,我不知道它是否适合所有人。 可能有一个更好的方式来表达它。

答案 3 :(得分:-1)

import math
while True:
    num=input("num: ")
    num=float(num)
    new_n=round(num,0)
    if (float(new_n)-0.5)==num:
        print(num-0.5)
    else:
        print(new_n)

输出:

num: 4.5
4.0
num: 5.5
5.0
num: 6.6
7.0
num: 5.5001
6.0

我必须做一些思考,但这应该做你想要的