0

倍精度は15 ~ 16桁です。

10 進数の精度: 28 ~ 29桁の有効数字。

したがって、10 進数を暗黙的に倍精度に変換できます。ただし、次のコードを検討してください。

double x = 100.3;
decimal y = 10.2;
 x = y;
 y = x;

x=yy=xどちらもコンパイル時エラーがあります。

decimal を double に、または double を decimal に暗黙的に変換できないのはなぜですか?

読んでください:doubleからdecimal、decimalからdouble

4

2 に答える 2

2

この 2 つのタイプの考え方はまったく異なります。Eric Lippert のこのブログを参照してください。

編集:

ブログの引用: 「範囲の不一致のため、double から decimal への暗黙的な変換はあり得ません。膨大な数の double は、考えられる最大の decimal よりも大きいため、暗黙的な変換は、おそらく巨大などちらも容認できません。10 進数から倍精度への暗黙的な変換が行われる可能性があります。これは、大きさではなく精度を失うだけだからです。」

于 2013-08-11T09:38:36.677 に答える
0

の精度はdecimal高くなりますが、double の範囲はより大きくなります。

doubleから-1.79769313486232E+308に移動し1.79769313486232E+308ます。一方、decimals は から-79228162514264337593543950335に移動し79228162514264337593543950335ます。大きな違いがあります。ただし、通常は から に変換するdecimal必要はありませんdouble。使用するdecimal場合、通常は精度を失いたくないからです (通常はバンキングに使用されるため、正確である必要があります)。

于 2013-08-11T09:36:22.027 に答える