舍入似乎很容易,但我無法弄清楚如何舍入。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?
舍入似乎很容易,但我無法弄清楚如何舍入。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' % (int(self.x * 100)/100.0,
int(self.y * 100)/100.0)
注意,這總是舍入到零,而不是捨去。如果您需要處理負值,這一點很重要。 (即-2.467將顯示爲-2.46)
因爲1.216比1.21更接近1.22,所以你的代碼四捨五入到1.22,如果你有1.213,它會舍入到1.21。所以你的功能目前不是四捨五入,而是四捨五入到最近的一個。
你可以做什麼總是向下取整到2位小數是
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。
類似於:import math,return'x =%.2f,y =%.2f'round_down%(self.x,self.y)? –