なぜ私はこれらすべての警告を無効にする代わりに、3.14の3.14fを配置する必要がありますか? これには一貫した理由がありますか? C++(およびC)規格が決めたものだ3.14などの浮動小数点値は、MSVCではデフォルトでなぜdoubleと見なされますか?
答えて
。浮動小数点型のリテラルはdouble型で、float型にする必要がある場合は、f
という接尾辞を付けます。そこ理由として何らかの具体的に述べた理由ではありませんが、私はCとの互換性のため)、それはだと思うだろうと、b)精度とストレージの間のトレードオフ。 が明示的に接尾辞で指定しない限り
2.13.3浮動リテラルリテラルフローティングの種類 はdoubleです。 の接尾辞fおよびFはfloatを指定し、接尾辞lおよびLはlong doubleを指定します。 スケーリングされた値は、そのタイプの 表現可能な値の 範囲にない場合、プログラムは、病気に形成されています。
これはおそらく、Cの世界では標準です。 Doubleはより正確であり、おそらくパフォーマンスの違いは見られないので、Doubleが好ましい。 this postを読んでください。
今日のマシンではほぼ肯定的ですが、FPUを搭載した組み込み機器では私はそうは確信していません。 – jokoon
@gokoon:そうです。デフォルトで私は "普通"のマシンについて話していると仮定しました。それはデスクトップPCとサーバーを意味します。組み込みデバイスでは、最適化が重要であり、場合によってはshortとintの間で選択する必要があることも珍しくありません。 – darioo
FPUであっても、doubleはfloatの2倍のスペースを必要とするため、*非常に大きな量のデータを処理する場合、個々のレジスタレベルの操作が同じ長さをとってもメモリ帯域幅が大きくなることがあります。 – Clifford
CおよびC++は、いくつかの方法で浮くダブル好みます。あなたが気づいたように、明示的に浮動小数点型にしない限り、小数のリテラルは二重です。また、floatはvarargsで渡すことはできません、それらは常にdoubleに昇格します(charとshortはintにvarargsで昇格されるのと同じ方法です)。
むしろdouble
拡張float
であるより、契約double
としてfloat
を考えるのは、おそらく良いでしょう。すなわち、double
が好ましい浮動小数点タイプであり、は、特定の場合にはより小さいバージョンのdouble
が必要なときはいつでも使用されます。それは私が一貫した理由で知っている最も近いものです。そして、あなたがより小さなバージョンが必要な場合に起こったとしても、ルールは理にかなっています。
これはMSVCに特有のものではなく、言語標準で必要です。
ではなく、では明示的に要求されない限り精度を下げることをお勧めします。デフォルトはdoubleです。
単精度浮動小数点が提供する6桁の精度は、一般的な使用にはほとんど十分ではなく、現代のデスクトッププロセッサでは、作者が十分かつ必要であると判断したハンドコード化された最適化として使用されます。したがって、単精度リテラルを指定するには、明示的な可視マーカーが必要であることが理にかなっています。
+1; @ gokoon:適切なタイプまたはサイズを取得したい場合は、別の接尾辞を使用する必要があります。たとえば、符号なしの64ビット値を使用する場合は、接尾辞 'ull'を使用します。 – franji1
double
は、よりもはるかによく、3.14と近似できるため、おそらく?それは、ありません
3.140000000000000124344978758017532527446746826171875(double
)
3.1400001049041748046875(float
)
どちらもPIの良い近似ではありません.-D – franji1
- 1. なぜNaNの型は浮動小数点ですか?
- 2. なぜこの浮動小数点比較は真ですか?
- 3. 浮動小数点数は浮動小数点数ですか?
- 4. 浮動小数点値と浮動小数点値の比較
- 5. Java doubleとOracleがSQL Serverの数値に浮動小数点
- 6. CSSに浮動小数点の中心がないのはなぜですか?
- 7. 浮動小数点型のタイトルツールチップはなぜ機能しないのですか?
- 8. 浮動小数点の浮動小数点が正しく浮動しない
- 9. この浮動小数点配列はなぜエラーになりますか?
- 10. 浮動小数点例外C++なぜ、それは何ですか?
- 11. なぜこの浮動小数点例外が生成されますか?
- 12. 浮動小数点数浮動小数点数値
- 13. どの浮動小数点比較がより正確で、なぜですか?
- 14. CとC++で浮動小数点数/複素数の除算演算がないのはなぜですか?
- 15. 数値を浮動小数点数にソートする - アスキーオーダーではない - Pythonで
- 16. スペースがないときに浮動小数点数を強制的にリサイズするのではなく、浮動小数点数を浮動小数点以下の表の下に移動するにはどうすればよいですか?
- 17. 浮動小数点型の浮動小数点数を使用している浮動小数点数は、浮動小数点数の上位16桁です。
- 18. AppleScriptでランダムな浮動小数点が返される
- 19. Redis:大きな浮動小数点数
- 20. なぜ "overflow:hidden"が浮動小数点数をクリアするのですか?
- 21. IE7は浮動小数点数が0になります。
- 22. Python "float"とPostgreSQLの浮動小数点数 "double precision"
- 23. LIなし浮動小数点リストLI
- 24. アダプターは浮動小数点で表示されます
- 25. Haskellで小数点位置のない浮動小数点整数を表示する簡単な方法は?
- 26. Delphiでは、なぜ、直接比較可能なthreadvarタイプの浮動小数点はありませんか?
- 27. CSS - 浮動小数点型を使用しないときに、コンテナ内のボックスはなぜですか?
- 28. 浮動小数点から取得される値は0.0ですか?
- 29. なぜASP.NET MVC 3は浮動小数点数を正しく検証しないのですか?
- 30. 浮動小数点数を扱うときに不規則な小さな数値を避ける
そして、それはかなり明確OPの質問に答える:ここでは正確な値はありますか? –