5

使用するのに最適なデータ型である 0.000 に続く数値を格納したいと考えています。

ダブル?

また、INTは問題外だと思いますか?

4

12 に答える 12

27

このdecimal型は、固定小数点演算に最適です。

C# 仕様セクション 4.1.7 から:

float および double データ型とは対照的に、0.1 などの 10 進数の小数は、10 進数表現で正確に表すことができます。float および double 表現では、このような数値は無限小数であることが多く、これらの表現では丸め誤差が発生しやすくなります。

于 2009-09-04T18:47:20.327 に答える
6

私はまだ10進数のファンです。もう少しスペースがかかるかもしれませんが、floatとdoubleの丸め誤差とまったく同じではありません。

それは、必要な精度と精度、および格納する数値の種類によって異なります。

お金を扱っている場合など、float や real の丸め誤差はおそらく受け入れられないでしょう。

もちろん、必要な値の範囲に応じて完全に固定されている場合は、1000 を掛けて short などの整数型として格納できます。

http://www.yoda.arachsys.com/csharp/floatingpoint.htmlの丸め誤差の例

double a = 0.65d;  
double b = 0.05d;  
Console.WriteLine("{0:r}", a + b);  

{0:r}.net は値を四捨五入し、正確に 0.7 でなくても 0.7 と表示されます。

数回の計算で、このような丸め誤差が増加する可能性があります。

于 2009-09-04T18:46:57.940 に答える
3

yopuがファイルサイズを表しているというコメントに基づいて、整数または長整数でバイトを格納することを検討してください...これにより、問題が完全に回避され、KBの1/1024をdoubleまたはfloatに変換する際に固有の丸めエラーが回避され、あなたが表している現実世界の測定に近い。

于 2009-09-04T18:46:54.070 に答える
2

float は 7 桁の精度です。double は 15 桁の精度です。

フロートで十分です

于 2009-09-04T18:42:11.320 に答える
2

私のアドバイスは、フロートを使用することです。精度を上げるには double を使用し、さらに精度を上げるには decimal を使用します。

于 2009-09-04T18:42:53.597 に答える
1

Int はあなたにぴったりです。小数でメモリを浪費します。小数点以下 3 桁のみを使用する場合は、常に 1000 で乗算/除算することを忘れないでください。

とにかく、財務に使用する場合、それは面倒な場合があります-とにかく小数に固執してください.

デュレーションや長さなどのある種の単位に使用する場合、 int は、常に秒からミリ秒、またはメートルからミリメートルに移動できるため、適切に適しています。

希望する用途を説明していただけると助かります。

また、MSDN で見た情報によると、10 進数は浮動小数点と同じですが、精度が高く、丸めがありません。

さらに: decimal - 16 バイト、int - 4 バイト

ただし、int を 1000 で割った値の範囲は +/-2,147,483 のみです。

編集:

あなたのコメントを読みましたが、ファイルサイズの場合に使用しますか? もしそうなら、私は小数がどこから来たのかわかりません...多分それらは表示のためだけですか?

とにかく、ここでは Int64 を使用してください。

于 2009-09-04T21:07:59.527 に答える
1

float は小数点以下約 6 桁まで「正確」であり、double はより高い精度まで「正確」です。ただし、どちらも小数点以下 3 桁の値を正確に表すことはできません。

0.123 のような数値が 0.122999999 として格納されることを気にしない限り、float を使用しても問題ない可能性があります...必要な結果を得るには、少し慎重に丸めるだけで十分です。

小数点以下 3 桁の可能な分数をすべて正確に表現したい場合は、整数を使用して値に 1000 を掛けた方がよいでしょう。つまり、3.456 の値は 3456 として整数に格納されます。

于 2009-09-04T18:47:29.077 に答える
0

保存したいファイルサイズについては、long (Int64) を使用してバイト数を保存します。または、ファイルが約 2GB 未満になることがわかっている場合は、int を使用します。次に、単純な方法を使用して、これをより人間が読める形式に変換できます。

于 2009-09-04T19:13:17.263 に答える
0

フロートのほうがいいです。

于 2009-09-04T18:41:50.307 に答える
0

ファイルサイズの場合は、サイズをキロバイトからバイトに、またはより小さい範囲 (メガからキロバイト) に変更し、浮動せずに同じ精度を維持することができます。

それ以外の場合は、ダブルが良いでしょう。

于 2009-09-04T18:43:51.363 に答える