19

いくつかの浮動小数点計算を行うプログラムを開発しています。関数 (float を提供する) を doctest でテストする方法はありますか?

4

5 に答える 5

15

確かに、float が期待する精度の知識に基づいて、適切な形式で float をフォーマットするだけです。たとえば、小数点以下 2 桁の精度が期待される場合は、

''' Rest of your docstring and then...

    >>> '%.2f' % funcreturningfloat()
    '123.45'

'''
于 2010-03-11T21:16:14.670 に答える
9

ドキュメントには提案があります

また、浮動小数点数は、プラットフォーム間でわずかな出力変動の影響を受けます。これは、Python が float の書式設定をプラットフォームの C ライブラリに委ねており、C ライブラリの品質が大きく異なるためです。

>>> 1./7  # risky
0.14285714285714285
>>> print 1./7 # safer
0.142857142857
>>> print round(1./7, 6) # much safer
0.142857
于 2010-03-11T21:42:49.073 に答える
3

数値結果のテストを簡素化する doctest 拡張機能である numtest を使用できます。 https://pypi.python.org/pypi/numtest

>>> 1.0/3
0.333

失敗例: 1.0/3 予想: 0.333 取得: 0.3333333333333333

>>> 1.0/3 # doctest: +NUMBER
0.333

import doctest
import numtest
doctest.testmod()

プロセスは終了コード 0 で終了しました

すべてのテストに合格しました。テストで文字列をフォーマットする必要はありません。

于 2014-11-28T10:50:14.753 に答える
0

文字列形式では、テストタプルを使用できます。

>>> funcreturningfloattuple(1.0)
(1.0, 1.0)
>>> '%.2f, %.2f' % funcreturningfloattuple(1.0)
'1.00, 1.00'

>>> funcreturningfloattuple(1.4)
(1.3999999999999999, 1.3999999999999999)
>>> '%.2f, %.2f' % funcreturningfloattuple(1.4)
'1.40, 1.40'
于 2011-03-08T17:11:43.217 に答える