Python 为什么我的父函数不是四舍五入的,但当我在另一个函数中调用它时,它会四舍五入?
当我调用Python 为什么我的父函数不是四舍五入的,但当我在另一个函数中调用它时,它会四舍五入?,python,Python,当我调用area()时,我得到一个未舍入的数字(即73.5629996178102),但当我调用str时,它返回73,因为您使用的格式说明符: import math class Shape(object): def __init__(self,base,side,theta=90): self.base=base self.side=side self.theta=theta def area(self): re
area()
时,我得到一个未舍入的数字(即73.5629996178102),但当我调用str
时,它返回73
,因为您使用的格式说明符:
import math
class Shape(object):
def __init__(self,base,side,theta=90):
self.base=base
self.side=side
self.theta=theta
def area(self):
return float(self.base*self.side*math.sin(math.radians(self.theta)))
def __str__(self):
return ('I am a %s with area of %d' %
(self.__class__.__name__,(float(self.area()))))
%d
(用于int
的C样式字符串格式化程序)将截断任何浮点值,如果您传递该值。相反,要使用的正确格式说明符字符串应该是%f
:
In [1]: '%d' % 3.14
Out[1]: '3'
但是,我建议改用str.format
,这样您就不必担心使用什么格式说明符了
In [2]: '%f' % 3.14
Out[2]: '3.140000'
str.format
还可以更好地控制浮点数的显示:
def __str__(self):
return 'I am a {} with area of {}'.format(self.__class__.__name__, self.area())
由于您使用的格式说明符,请阅读有关格式函数的详细信息。:
import math
class Shape(object):
def __init__(self,base,side,theta=90):
self.base=base
self.side=side
self.theta=theta
def area(self):
return float(self.base*self.side*math.sin(math.radians(self.theta)))
def __str__(self):
return ('I am a %s with area of %d' %
(self.__class__.__name__,(float(self.area()))))
%d
(用于int
的C样式字符串格式化程序)将截断任何浮点值,如果您传递该值。相反,要使用的正确格式说明符字符串应该是%f
:
In [1]: '%d' % 3.14
Out[1]: '3'
但是,我建议改用str.format
,这样您就不必担心使用什么格式说明符了
In [2]: '%f' % 3.14
Out[2]: '3.140000'
str.format
还可以更好地控制浮点数的显示:
def __str__(self):
return 'I am a {} with area of {}'.format(self.__class__.__name__, self.area())
阅读有关格式函数的更多信息。如果您的问题得到了回答,请不要忘记。请参见上文^^^^^^如果您的问题得到了回答,请不要忘记。请参见上文^^^^^