


Go が `912 * 0.01` に対して 9.12 を出力するのに、`float64(912) * 0.01` に対して 9.120000000000001 を出力するのはなぜですか?
2 つの float64 の間に不一致があるのはなぜですか?
次の Go スニペットを考えてみましょう:
fmt.Println(912 * 0.01) fmt.Println(float64(912) * 0.01)
正しく理解しながら2 行目には 9.120000000000001 が出力されます。最初の行がなぜ末尾に ...01 を付けずに 9.12 を出力するのか不思議に思うかもしれません。
その答えは、仕様で定義されている Go の定数式の処理にあります。
定数式は常に評価されます。その通り;中間値と定数自体は、言語で事前に宣言された型でサポートされているよりも大幅に大きい精度を必要とする場合があります。
912 * 0.01 は定数式であるため、非常に高い精度で評価されます。この式の結果を引数として fmt.Println() に渡すときも、これと同じ精度が維持されます。本質的に、 fmt.Println(912 * 0.01) は fmt.Println(9.12) であるかのように動作します。9.12 は評価された式の正確な表現です。
対照的に、912 を明示的に float64 にキャストすると、 2 行目では、浮動小数点乗算の両方のオペランドが暗黙的に float64 にキャストされます。 0.01 は float64 では正確に表現できないため、精度の低下が発生し、出力に ...01 が存在します。
したがって、結果の違いは、定数式の評価中に保持される精度と暗黙的な精度に起因します。 float64(912) * 0.01.
に関係するキャスト以上がGo が `912 * 0.01` に対して 9.12 を出力するのに、`float64(912) * 0.01` に対して 9.120000000000001 を出力するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

fatestinggocodewithinit functions、useexplicitsetupfunctionsurseSorseparatet fileStoavoidepencyonInitonitisideEffects.1)useexplicitsetupfuncontrollglobalbariaveInitialization.2)createSeparateSteSteSteStobypassInit funtedtententen

Go'serrorhandlingReturnserrorsasasvalues、javaandpython whichuseexceptions.1)go'smethodensuresexpliciterror handling

効果的なインターフェイスリングミニマル、クリア、およびプロモテスルーシューリング。1)インターフェイスForfforfibilityOfimplementation.2)interfacesforact forabstractiontoswapimplementations withingingcallingcode.3)設計の快適性を発信すること

集中型エラー処理は、GO言語でのコードの読みやすさと保守性を向上させることができます。その実装方法と利点には、次のものが含まれます。1。ビジネスロジックからロジックを個別に処理し、コードを簡素化します。 2。中央の取り扱いによるエラー処理の一貫性を確保します。 3. DeferとRecoverを使用してパニックをキャプチャおよび処理して、プログラムの堅牢性を高めます。

Ingo、AlternativestoinititionCustomInitializationAndSingletons.1)CustomInitializationAltionsionAlowoveroveroveroveroveroveroveroveroveroveroveroveroveroveroveroverover curs、beantefordedorcontionalsetups.2)singletonsensureone-initializatializatializatialent

gohandlesinterfacesandtypeassertionseffectivivivivivity、強化された柔軟性と耐毒性を強化します

言語エラー処理は、エラーとエラーを介してより柔軟になり、読みやすくなります。 1.エラーは、エラーが指定されたエラーと同じであり、エラーチェーンの処理に適しているかどうかを確認するために使用されます。 2.エラー。エラータイプを確認するだけでなく、エラーを特定のタイプに変換することもできます。これは、エラー情報を抽出するのに便利です。これらの関数を使用すると、エラー処理ロジックを簡素化できますが、エラーチェーンの正しい配信に注意を払い、コードの複雑さを防ぐために過度の依存性を回避できます。

tomakegogoapplicationsRunfasterAndMore -efficient、useprofilingtools、leverageconconcurrency、andmanagememoryefcectively.1)useprofforcpuandmemoryprofilingtoidentififybottlenecks.2)


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
