试图将有效值分配给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的C#操作溢出

double d2 = 1024 * 1024 * 1024 * 1024; 

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

因为您正在创建一个整数1024*1024*1024*1024,该整数溢出int.MaxValue,然后将其赋值为双精度。

double d2 = 1024.0 * 1024.0 * 1024.0 * 1024.0; 

应该可以正常工作。