整理似乎很容易,但我无法弄清楚如何向下舍入。
使用此代码:
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?
答案 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。