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())

阅读有关格式函数的更多信息。

如果您的问题得到了回答,请不要忘记。请参见上文^^^^^^如果您的问题得到了回答,请不要忘记。请参见上文^^^^^