- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我不想要它们(或者我认为如此)时,我得到了 OverflowException 抛给我。我正在执行一些奇怪的计算,我希望这些值会溢出,从而丢弃溢出的位。看来我无法让它正常工作。基本上这是一对 i 和 j,当我迭代巨大的集合(int.MinValue 到 int.MaxValue)时发生。
// i and j are ints
// i is -2147483648
// j is -1
var x = i / j;
// I also tried using unchecked keyword, but it doesn't help
var x = unchecked(i / j);
更新:
-2147483648/-1 的预期数学值为 2147483648。但是,这段特定代码并没有真正尝试找到该数字。这是一系列有点难以理解的位操作的一部分。老实说,我什至不知道自己的意图是什么,因为我并没有真正记录这个方法,而且只花了一天的时间就让我头顶上出现了严重的 WTF 泡沫。我所知道的是,它可以按预期工作,并使用旨在处理这种情况的特殊代码。
关于期望值:
由于 int 最多只能容纳 2147483647,因此我希望丢弃产生值 0 的溢出。
如果我对此有任何了解,那可能就是文档对晦涩方法的重要性。
最佳答案
我相信这是唯一您会得到此异常的情况。它是 Int32
范围内唯一可以溢出的除法。 (当然有被零除,但那是一个不同的异常(exception)。)
所以如果你想避免OverflowException
,你只需要处理这种情况。你想让它做什么?编写一个方法来识别这种确切的情况,否则进行正常除法。
注意:这也是为什么您不应该通过仅否定结果来尝试反转比较的原因。如果您想按降序而不是升序对某些内容进行排序,则不要使用 -Compare(x, y)
,而应使用 Compare(y, x)
。否定不会给 int.MinValue
溢出(除非你在检查的上下文中) - 它只是默默地返回 int.MinValue
.
关于c# - 如何停止在整数除法时抛出 OverflowException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300777/
当我不想要它们(或者我认为如此)时,我得到了 OverflowException 抛给我。我正在执行一些奇怪的计算,我希望这些值会溢出,从而丢弃溢出的位。看来我无法让它正常工作。基本上这是一对 i 和
有人可以解释以下行为吗: static void Main(string[] args) { checked { double
我的代码将一个字典作为参数并返回一个字典。 代码计算所有 double 值的总和,并使用总和计算每个值占总和的百分比。它返回一个新的字典,其中百分比连接到键上。 我的 Web 服务器的事件查看器中记录
我有一些用于解析网络响应的类: [DataContract] public abstract class GYResponse { [DataMember(Name = "code")]
我有一个 x64 WinForms 程序,可以与 MySQL 和 ODBC 连接器正常工作。直到一台机器让我更改为 x86,现在我有了这行代码: var someValue = data.GetStr
在向文本框输入负值时,我收到一条错误消息:Unhandled Exception: System.OverflowException: Value was either too large or to
所以这是我的代码: static void Main(string[] args) { Console.WriteLine("How many numbers are you going to
在下面最后一行的方法中,我总是遇到异常: System.OverflowException: Value was either too large or too small for an Int32.
我有一个简单的 Windows 应用程序,文本框在那里。当我在金额文本框中输入金额时,它会将其转换为另一个名为 txtrupees 的文本框中的单词。金额文本框字段最大长度设置为最后 3 位 .00
编写代码后可以归结为以下内容: var size=-1; var arr=new byte[size]; 我很惊讶它抛出一个 OverflowException . OverflowException
转换时double (或 float )到 decimal , 溢出异常是可能的。所以我写了这个小的扩展方法,通过饱和来防止这种情况: public static decimal ToDecimalS
我有一个奇怪的问题。我一直在互联网上搜索一种又好又快的高斯模糊算法。我终于找到了! 所以我所做的就是在一个新项目中尝试它 - 它工作得很好。 当我打算将该类导入到我的主项目中并尝试它时,我得到了一个
我有多个库项目,它们都依赖于支持库。我的应用程序依赖于这些多个库项目。每个库项目都在其 R.java 文件中包含支持库资源的引用。由于冗余,这会增加字段 ID 计数。 我的应用获得了 DexIndex
我在用 Decimal.Round(decimal d) MSDN 说它可以抛出 OverflowException https://msdn.microsoft.com/en-us/library/
也许是一个无用的问题: public static double Average( this IEnumerable source, Func selector ) 上述方法抛出的异常
我正在使用 NHibernate 通过 ODBC 从 Oracle 数据库中选择一个实体。 这在 32 位系统上工作正常,但在 x64 上出现以下错误:似乎行数格式不正确? (ODBC部分) Arit
我有一个包含两个值的整数数组,每个值都是 int32 的最大值: int[] factors = new int[] { 2147483647, 2147483647 }; 我正在尝试获取这两个数字的
我在 C 中有以下代码,它将根据输入的序列号生成 key 。 unsigned int32 passkey(unsigned int32 snumber) { char snstring[11
我不确定我为什么得到它...知道为什么吗? 代码: data[i] = Convert.ToByte(build, 16); 其中 build 是一个 string,其值为 0x255 例如,其他转换
这个问题在这里已经有了答案: Why dividing int.MinValue by -1 threw OverflowException in unchecked context? (3 个回答)
我是一名优秀的程序员,十分优秀!