配列を作成し、デフォルト値を0.3に設定します。これは0.29999999999999999に従って、なぜそうですか? デフォルト値で配列を作成しますが、デフォルト値が変更されます
答えて
これは、浮動小数点値のバイナリ表現によるものです。いくつかの浮動小数点値は、指定されたメモリ空間で正確に表現することはできないため、適合する値に丸められます。 thisの詳細については、この記事をチェックしてください。これを避けたい場合、ほとんどのプログラミング言語は、基数10の算術を使用するデータ型を持ち、この制限はありません。速いのはNSDecimalNumber
ですが、通常このデータタイプははるかに遅いことに注意してください。
私はあなたの意味を理解して、あなたの説明は非常に良いです、ありがとう! – ChildrenGreens
実際はかなりシンプルです。ベース10のシステム(私たちのようなもの)を持っているときは、ベースの素因数を使った分数しか表現できません。 10の素因数は2と5です。したがって、分母はすべて素因数10を使用するので、1/2,1/4,1/5,1/8,1/10はきれいに表現できます。対照的に、1/3,1/6、および1/7は、それらの分母が3または7の素因数を使用するため、すべて小数点を繰り返します。バイナリ(または基底2)では、唯一の素因数は2です。主要な要素として2つしか含まれていません。バイナリでは、1/2,1/4,1/8はすべて小数点以下できれいに表現されます。一方、1/5または1/10は小数を繰り返すことになります。だから0.1と0.2(1/10と1/5)、ベース10システムでクリーンな小数点は、ベース2のシステムでは、コンピュータが動作している繰り返しです。これらの小数点以下の繰り返しで数学を行うと、あなたは残り物で終わるこれは、コンピュータのベース2(バイナリ)番号を人間が読めるベース10の番号に変換するときに引き継がれます。
詳細:
- 1. デフォルト値の作成または変更
- 2. NSUserDefaultsがデフォルト値を変更しない
- 3. sqlite3列のデフォルト値を変更する
- 4. ドロップダウン値がデフォルト値に変更されない/
- 5. Livevalidation:デフォルト値が変更されたときのみ検証します
- 6. DataGridViewコンボボックスをデフォルト値に変更すると、例外がスローされます
- 7. numpy配列で値が変更されています
- 8. VBA変数/配列のデフォルト値
- 9. 配列引数のデフォルト値
- 10. 角度2 - カスタムバリデータでフォームの値がデフォルト値から変更されたことを確認します
- 11. 配列の値が変更される
- 12. 文字列を識別し、デフォルト値で変更する方法
- 13. forループで作成されたtkinterラジオボタンをデフォルト値にリセットします。
- 14. JQDateRangeSlider変更のデフォルト値
- 15. JavaScriptのデフォルトのドロップダウン値のテキストボックスは変更されません
- 16. EF - 列のデフォルト値が設定されていません
- 17. AndroidがデフォルトでListPrefrenceのデフォルト値を動的に作成して埋め込む
- 18. クラスプロパティに値が設定されていないときにデフォルト値を作成
- 19. jquery selectオプションがデフォルト値で選択されています
- 20. カウント関数がデフォルト値1で表示されています
- 21. ボタンをクリックするとドロップダウンがデフォルト値にリセットされます
- 22. ActiveMQリソースアダプタのデフォルト値を変更する
- 23. Hybris:デフォルトのブースト値を変更する
- 24. pywinautoデフォルトのタイムアウト値を変更する
- 25. Django admin sessions:デフォルト値を変更する
- 26. デフォルト値のカラムを変更する
- 27. Html.DropDownListForデフォルトで選択された値が機能しません
- 28. Eloquentデフォルトの属性値:$ attributesまたはDB列のデフォルト値?
- 29. デフォルト値を使用して2Dベクトル配列を作成する方法は?
- 30. 動的に作成されたTHTMLabel.Heightは常にデフォルト値を返しますか?
一般的に使用すると、浮動小数点数を比較する必要がある場合は、 'Double'を使用しないでください。小数点を 'Int'で区切るか、単に' NSDecimalNumber'を使うことができます。 – Eendje
アドバイスありがとうございます! – ChildrenGreens
あなたが使用すべきでないNSDecimalと混同しないでください。 – BallpointBen