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:在检查模式下,编译时操作溢出
为什么是这样?
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)
应该工作正常.