试图将有效值分配给double的C#操作溢出
本文关键字:操作 溢出 double 有效值 分配 | 更新日期: 2023-09-27 18:20:29
我正在尝试获取以TB为单位的字节数。如果我使用Pow函数,我可以,但当我明确地尝试将1024乘以四倍时,我会得到一个错误。
Console.WriteLine((double.MaxValue)); // 1.79769313486232E+308
Console.WriteLine(Math.Pow(1024, 4)); // Clearly, 1099511627776 < MaxValue
double d2 = 1024 * 1024 * 1024 * 1024; // error
错误CS0220:在检查模式下,操作在编译时溢出
为什么会这样?
double d2 = 1024 * 1024 * 1024 * 1024;
在检查模式中,操作在编译时溢出
因为您正在创建一个整数1024*1024*1024*1024,该整数溢出int.MaxValue,然后将其赋值为双精度。
double d2 = 1024.0 * 1024.0 * 1024.0 * 1024.0;
应该可以正常工作。