25

MSDNの記事では、doubleデータ型の範囲は「-1.79769313486232e308..1.79769313486232e308」であると記載されています。一方、longデータ型の範囲は「-9,223,372,036,854,775,808..9,223,372,036,854,775,807」のみです。両方のサイズが64ビットの場合、どうすればdoubleaよりもはるかに多くのデータを保持できますか?long

http://msdn.microsoft.com/en-us/library/cs7y5x0x(v=vs.90).aspx

4

3 に答える 3

19

可能なdoubleの数、および可能なlongの数は同じであり、それらは異なる方法で分散されます*。

ロングは均一に分布していますが、フロートは均一に分布していません。あなたはここでもっと読むことができます。

もっと書きたいのですが、どういうわけかカーソルが携帯電話のあちこちを飛び回っています。

編集:これは実際にはもっと役立つかもしれません:http://en.wikipedia.org/wiki/Double-precision_floating-point_format#section_1

Edit2:そしてこれはさらに良いです: http: //blogs.msdn.com/b/dwayneneed/archive/2010/05/07/fun-with-floating-point.aspx

*そのリンクによると、NaNやその他の特殊な数値の表現方法によって一部の倍精度浮動小数点数が失われるため、実際にはもっと長い数があるように見えます。

于 2012-10-23T00:39:31.217 に答える
11

longは符号付き64ビット整数値でdoubleあり、64ビット浮動小数点値です。それらのFCLタイプを調べる方が理にかなっているかもしれません。longにマップしSystem.Int64、にdoubleマップしSystem.Doubleます。

于 2012-10-23T00:37:27.190 に答える