2017-11-25 10 views
0
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())))) 

私は丸められていない番号(すなわち73.56299996178102を。)を取得area()を呼び出すが、私はstrを呼び出すときにそれがあるため、使用している書式指定子の73なぜ私の親関数は丸められませんが、別の関数で呼び出すと丸められますか?

+0

質問に答えた場合は、[最も役立つ回答を受け入れる](https://stackoverflow.com/help/someone-answers)を忘れないようにしてください。 –

+0

上記を参照してください^^^^^ –

答えて

4

を返します。

In [1]: '%d' % 3.14 
Out[1]: '3' 

%dintのCスタイルの文字列フォーマッタ)は、渡すとすべての浮動小数点を切り捨てます。代わりに、使用する正しい書式指定文字列は%f次のようになります。

In [2]: '%f' % 3.14 
Out[2]: '3.140000' 

しかし、私の代わりにstr.formatを使用することをお勧めしたいので、あなたが使用するどのような形式指定子を心配する必要はありません。

In [3]: '{:.2f}'.format(3.1415) 
Out[3]: '3.14' 

PyFormat.infoでフォーマット機能について詳しく読む:

def __str__(self): 
    return 'I am a {} with area of {}'.format(self.__class__.__name__, self.area()) 

str.formatはまた、あなたの浮動小数点数の表示をより良好に制御することができます。

関連する問題