14

エンジニアリングの宿題を簡単にする関数のライブラリを作成し、それらを Python インタープリター (電卓のようなもの) で使用しました。いくつかの戻り行列、いくつかの戻り浮動小数点数。

問題は、返される小数が多すぎることです。たとえば、現在、数値が 0 の場合、非常に小さい数値が返されます (例: 6.123233995736766e-17)。

出力を個別にフォーマットする方法は知っていますが、インタープリターに入力する行ごとにフォーマッターを追加する必要があります。私はpython 2.6を使用しています。

セッションのグローバル出力フォーマット (精度など) を設定する方法はありますか?

*注: scipy 関数については、使用できることを知っています

scipy.set_printoptions(precision = 4, suppress = True)

しかし、これは scipy を使用しない関数では機能しないようです。

4

5 に答える 5

8

1つのアイデアは、from __future__ import print_function(一番上に)追加してから、標準の印刷機能をオーバーライドすることです。これは、小数点以下2桁の浮動小数点数で浮動小数点数を出力する非常に単純な実装です。

def print(*args):
    __builtins__.print(*("%.2f" % a if isinstance(a, float) else a
                         for a in args))

印刷機能を使用するには、出力コードを更新する必要がありますが、少なくとも、各場所でカスタムの書式設定ルールを要求するのではなく、一般的なものになります。フォーマットの動作を変更したい場合は、カスタムprint関数を変更するだけです。

于 2012-09-15T22:25:24.937 に答える
7

あなたが見ているのは、10進数の浮動小数点数は2進数の浮動小数点でしか近似できないという事実です。浮動小数点演算:問題と制限を参照してください。

モジュールレベルの変数をライブラリに配置し、それをの2番目のパラメーターとして使用してround()、モジュール内の関数の戻り値を四捨五入することもできますが、それはかなり抜本的です。

ipython (通常のインタープリターよりもはるかに優れたインタラクティブな使用をお勧めします)を使用する場合は、「magic」関数を使用できます。%precision

于 2012-09-15T21:25:10.223 に答える
5

set_printoptionsnumpy では、メソッド ( http://docs.scipy.org/doc/numpy/reference/generated/numpy.set_printoptions.html )を使用できます。

例えば:

import numpy as np
np.set_printoptions(precision=4)
print(np.pi * np.arange(8))
于 2016-07-18T22:43:33.380 に答える
0

数値と行列の結果にstrメソッドを追加して (まだ持っていないと仮定して)、常に同じ .format または %f を使用するようにすることができます。

于 2012-09-15T18:27:08.503 に答える