Python を使用して正確な 10 進数の計算を行うにはどうすればよいですか?
この記事では、Python で正確な 10 進数の計算を行う方法を学びます。
使用説明書
10 進数モジュールの Decimal() 関数の使用
数学モジュールの fsum() 関数を使用します
浮動小数点数がすべての 10 進数を正確に表現できないことはよく知られた欠点です。さらに、単純な数学的計算でも多少の誤差が生じる可能性があります。たとえば、-
###例###次のプログラムは、浮動小数点整数がすべての 10 進数を正確に表現できないことを示しています-
リーリー ###出力###上記のプログラムを実行すると、次の出力が生成されます -
リーリーこれらのエラーは、システムの基礎となる CPU とその浮動小数点ユニットで使用される IEEE 754 算術標準の「機能」です。 float インスタンスを使用してコードを作成する場合、Python の float データ型はネイティブ表現を使用してデータを保持するため、このようなエラーを防ぐためにできることは何もありません。
10 進数モジュールを使用すると、パフォーマンスが多少犠牲になりますが、精度が向上します。以下で見てみましょう。
方法 1: 10 進数モジュールの Decimal() 関数を使用する ###例### 次のプログラムは、Decimal() 関数を使用して正確な 10 進数を計算する例を示しています。 リーリー ###出力###
上記のプログラムを実行すると、次の出力が生成されます -リーリー
上記のコードでは、数値が文字列として指定されていることに最初は少し奇妙に感じるかもしれません。ただし、10 進数オブジェクトは期待どおりに機能します (すべての一般的な数学演算がサポートされているなど)。これらを印刷したり、文字列書式設定関数で使用したりすると、通常の数値のように見えます。桁数や丸め方法など、計算のさまざまな側面を制御することは、
decmal
の重要な機能です。###例###
これを行うには、ローカル コンテキストを作成し、その設定を変更します。リーリー ###出力###
上記のプログラムを実行すると、次の出力が生成されます -リーリー
精度を向上させるには、精度の値を「60」に増やします###例### リーリー ###出力### 上記のプログラムを実行すると、次の出力が生成されます - リーリー
方法 2: 数学モジュールの fsum() 関数を使用する10 進数モジュールは、IBM の「Universal Decimal Arithmetic 仕様」を実装しています。
言うまでもなく、この記事の範囲を超えたカスタマイズ オプションが多数あります。
Python 初心者は、浮動小数点データ型の精度の問題を解決するために 10 進数モジュールを使用したくなるかもしれません。ただし、アプリケーション分野を理解する必要もあります。通常、通常の浮動小数点タイプは、科学または工学の問題、コンピュータ グラフィックス、またはその他の科学的な性質のものを扱う場合によく使用されます。
たとえば、実世界では、浮動小数点数によって提供される
17 桁の精度
で測定できる要素はほとんどありません。したがって、小さな計算誤差があっても影響はありません。さらに、ネイティブ浮動小数点
は大幅に高速です。これは、多数の計算を実行する必要がある状況では非常に重要です。
###例###ただし、間違いを完全に避けることはできません。多くのアルゴリズムは数学者によって広く研究されており、一部のアルゴリズムは他のアルゴリズムよりもエラーの処理に優れています。さらに、キャンセルの減算や大小の数値の加算を行うと結果が生じる可能性があるため、注意が必要です。
リーリー ###出力###上記のプログラムを実行すると、次の出力が生成されます -
リーリーfsum() 関数は、指定された範囲または反復可能なオブジェクト間の合計を見つけるために使用されます。数学ライブラリをインポートする必要があります。数学的な計算で広く使用されています。
###文法###以下は関数の構文です。
リーリー反復可能なオブジェクトは範囲、配列、またはリストです。
戻り値の型 - 浮動小数点数を返します。 ###例### 次の例は、
math.fsum()-
でのより正確な実装に使用できます。 リーリー ###出力###上記のプログラムを実行すると、次の出力が生成されます -
リーリー対照的に、他のアルゴリズムのエラー伝播特性を実際に研究して理解する必要があります。
それでも、金融などのトピックを扱うプログラムでは、10 進数モジュールが最もよく使用されます。これらのシステムの計算に小さな誤差が現れると、非常に不快なものになります。
したがって、10 進数モジュールは、この状況を回避する方法を提供します。 Python がデータベースと対話するとき、特に財務データにアクセスするときに、Decimal オブジェクトが再び発生することがよくあります。
###結論は###この記事では、特定の状況下では通常の計算が失敗するため、正しい 10 進数の計算が必要であることを学びました。 2 つの別個の関数、decmal() と fsum() を使用して正確な 10 進数の計算を実行する方法を学びました。また、 localcontext() 関数を使用して結果の精度を設定する方法も学びました。
以上がPython を使用して正確な 10 進数の計算を行うにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

classMethodsinpythonareboundtotheclassandottoinstances、creatinginganobject.1.theyReadeDefinedTheSusingsingsisingsisthedtaklsasthefirstparameter、referringtotheclassiT self.2

Asyncio.Queueは、非同期タスク間の安全な通信のためのキューツールです。 1.プロデューサーはawaitqueue.put(item)を介してデータを追加し、消費者はwaitqueue.get()を使用してデータを取得します。 2。処理する各アイテムについて、queue.task_done()を呼び出して、queue.join()がすべてのタスクを完了するのを待つ必要があります。 3。消費者に停止するように通知するために、最終信号としてなしを使用します。 4.複数の消費者の場合、複数のエンド信号を送信する必要があります。または、タスクをキャンセルする前にすべてのタスクを処理する必要があります。 5.キューは、マックスサイズの制限容量の設定をサポートし、操作を自動的に一時停止して取得し、イベントループをブロックしません。プログラムは最終的にCANCを通過します

toseepythonoutputinaseparatepanelinsublimeText、usethebuilt-inbuildsystemsystemvisavingyourfilewitha.pyextensionandpressingctrl b(orcmd b).2.ensuretecortecortecortecortecorretecortecortecortecortecortecortecortecortecortecortecortecortemsystemselected byoveringtotools

REモジュールを介してPythonに正規表現が実装され、文字列が検索、マッチング、操作されます。 1。Re.Search()を使用して、文字列全体で最初の一致を見つけます。Re.Match()は、文字列の開始時にのみ一致します。 2。ブラケット()を使用して、読みやすさを向上させるために名前が付けられる一致するサブグループをキャプチャします。 3。Re.Findall()はすべての非重複マッチを返し、Re.Finditer()は一致するオブジェクトの反復ターを返します。 4。Re.sub()は、一致するテキストを置き換え、動的関数の交換をサポートします。 5.一般的なパターンには\ d、\ w、\ sなどが含まれます。Re.ignoreCase、re.Multiline、Re.Dotall、reを使用できます。

sursepythonisinstalledbyrunningpython - versionorpython3-- versionintheterminal; ifnotinstalled、downloadfrompython.organdaddtopath.2.insublimetext、gototools> buildsystem> newbuildsystem、aglectecontentwith {"

variabliesinpythonarecreatedbyasingingavalueushingthe = operator、anddatatypessuchasint、float、str、bool、andnonetypedekinetekindekindofdatabeingstored、

usesys.argvforsimpleargumentacess、whereargumentsaremanmemanalemanallyhandnoAutomaticValidationorhelpisprovided.2.useargparseforrobustInterfaces、asitsuportsautomatichelp、Typechecking、optionalguments、anddefaultisvalues.3.margparseisporcompumedのddefaulturemed.

リモートPythonアプリケーションをデバッグするには、Debugpyを使用してポート転送とパスマッピングを構成する必要があります。まず、リモートマシンにDebugpyをインストールし、コードを変更してポート5678を聴き、SSHトンネルを介してリモートポートをローカルエリアに転送し、Vscodeの発射で「AttachToreMotepython」を構成し、ローカルドロートとレモートのポスフォースを正しく設定します。最後に、アプリケーションを開始し、デバッガーに接続して、リモートブレークポイントのデバッグ、可変チェック、コードステッピングを実現します。プロセス全体は、デバッグの安全なポート転送と正確なパスマッチングに依存します。
