Python 2.7:向下舍入而不是向上舍入

时间:2015-06-28 00:30:52

标签: python python-2.7

整理似乎很容易,但我无法弄清楚如何向下舍入。

使用此代码:

def __str__(self):
        return'x = %.2f,y = %.2f'%(self.x,self.y)

输出:

>>> p1 = Point(1.216,3.4582)
>>> print p1
x = 1.22,y = 3.46

如何返回x = 1.21而不是1.22而y = 3.45而不是3.46?

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

return 'x = %.2f, y = %.2f' % (int(self.x * 100)/100.0, 
                               int(self.y * 100)/100.0)

请注意,这总是向零舍入而不是向下舍入。只有在需要处理负值时,这才是重要的。 (即-2.467将显示为-2.46)

答案 1 :(得分:1)

因为1.216接近1.22而不是1.21,所以你的代码四舍五入到1.22,如果你有1.213,它将四舍五入到1.21。所以你的功能目前还没有四舍五入,而是四舍五入到最近的一个。

你可以做的总是向下舍入两位小数是

int(100*x)/100.0

总是舍入到零,或

math.floor(100*x)/100.0

总是向下舍入。

所以你可以:

正常:

def __str__(self):
    return'x = %.2f,y = %.2f'%(self.x,self.y)

始终为零:

def __str__(self):
    return'x = %.2f,y = %.2f'%(int(100*self.x)/100.0,int(100*self.y)/100.0)

始终向下舍入:

def __str__(self):
    return'x = %.2f,y = %.2f'%(math.floor(100*self.x)/100.0,math.floor(100*self.y)/100.0)

始终围捕:

def __str__(self):
    return'x = %.2f,y = %.2f'%(math.ceil(100*self.x)/100.0,math.ceil(100*self.y)/100.0)

确保

import math

如果您打算使用math.floor或math.ceil。