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

Python 2.7:向下舍入而不是向上舍入,python,python-2.7,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?您可以执行以下操作: return 'x = %.2f, y = %.2f'

取整似乎很容易,但我不知道如何取整

使用此代码:

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?

您可以执行以下操作:

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

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

您可以执行以下操作:

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

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

因为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.

因为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.

类似于,导入math,返回'x=%.2f,y=%.2f'四舍五入%(self.x,self.y)?类似于,导入math,返回'x=%.2f,y=%.2f'四舍五入%(self.x,self.y)?返回x=1.00而不是1.21您需要除以100.0而不是100,它将起作用,你说得对。我当时正在使用Python3.4进行测试,它看起来是隐式地转换为浮动的。这就解决了这个问题。非常感谢。返回x=1.00而不是1.21你需要除以100.0而不是100,它将作为广告,你是正确的。我当时正在使用Python3.4进行测试,它看起来是隐式地转换为浮动的。这就解决了这个问题。非常感谢。