2016-08-07 8 views
-1

この形式のPythonで数値を出力する必要があります。 n = "35.66667" 出力は "35.666"にする必要があります。さて、私は小数点以下3桁までのpythonでround()関数を試しましたが、35.667の結果が間違っていました。Pythonで浮動小数点値を切り上げて出力しない

どのように私はを丸めずに小数点以下3桁までfloat値をで印刷できますか?

+5

なぜ出力は「35.666」である必要がありますか?それは価値の正確な反映ではありません。 –

+0

はい、それは質問されたthatsです。浮動小数点数を小数点以下3桁まで切り捨てることはできません –

+0

文字列表現を3桁に切り捨て、切り捨てることはできません。 – DeepSpace

答えて

3

はい、それは質問されました。四捨五入せずに小数点以下3桁まで浮動小数点値を出力する。

だから、文字列表現をトリム:

def trim_float(n, d): 
    n_str = str(n) 
    point_index = n_str.find('.') 
    return float(n_str[:point_index + d + 1]) 

print(trim_float(35.66667, 3)) 
>> 35.666 
+0

ありがとうございます! –

0

あなたは(つまり切り捨て)35.666に35.66667を強制したい場合、これは仕事ができる:

import math 

n = 35.6667 

print(math.floor(n * 1000)/1000) 

出力

35.666 

うまくいけば、誰かがこれを達成するよりエレガントな方法を投稿することができます。 formatを使用して

0

n = 35.66667 
print "{0!s:.6}".format(n) 
# 35.666 
0

あなたが三進過去のすべてを切り捨てるしたいようです。丸めを行うと、丸められた結果が得られますが、必要なものは得られません。

不要な小数をスライスするだけで済みます。学術的な状況で

n = "35.66667" 
print(float(n[:-2])) 
=> 35.666 
1

、答えは例えば次のようになります。

「それは3桁までmath.floor、フロートに文字列を変換して文字列にバックに変換」

(またはあなたが働きたいと思う会社へのインタビューで)、正しい答えは:

"なぜ?!?このビジネスロジックの背後にある理由を説明してください。bef私たちはあらゆる実装を試みます。

関連する問題