尝试将有效值赋值为double时,C#操作溢出

try*_*h22 2 c# double overflow

我试图获得一个TB的字节数.如果我使用Pow功能,我没问题,但是当我明确尝试将1024乘以1024时,我得到一个错误.

  Console.WriteLine((double.MaxValue)); // 1.79769313486232E+308
  Console.WriteLine(Math.Pow(1024, 4)); // Clearly, 1099511627776 < MaxValue
  double d2 = 1024 * 1024 * 1024 * 1024; // error
Run Code Online (Sandbox Code Playgroud)

错误CS0220:在检查模式下,编译时操作溢出

为什么是这样?

Eri*_* J. 7

double d2 = 1024 * 1024 * 1024 * 1024; 
Run Code Online (Sandbox Code Playgroud)

在检查模式下,操作在编译时溢出

因为您正在创建一个1024*1024*1024*1024的整数,它会溢出int.MaxValue,然后将其分配给double.

double d2 = 1024.0 * 1024.0 * 1024.0 * 1024.0; 
Run Code Online (Sandbox Code Playgroud)

应该工作正常.