问题标签 [arithmetic-overflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
392 浏览

c - C 强制转换为 void 指针时可能溢出

我正在使用一个名为 Polyspace 的代码分析工具。我在一个代码部分收到“可能溢出”通知,我可以弄清楚:)

错误:操作 [conversion from unsigned int32 to unsigned int16] 标量溢出(结果总是严格大于 MAX UINT16)从 unsigned int 32 到 unsigned int 16 的转换正确:[956448 .. 972799]

代码是:

导致错误的行是这样的:

非常欢迎任何帮助:)

0 投票
2 回答
2596 浏览

java - 避免 Instant.toEpochMilli() 算术溢出

调用 JDKInstant.toEpochMilli()可能会导致算术上溢/下溢(例如Instant.MAX.toEpochMilli()Instant.MIN.toEpochMilli())。我正在寻找一种简单的方法来避免算术溢出并简单地使用Long.MAX_VALUE. 这是我当前的代码。

似乎必须有一种更清洁/更清晰的方式来实现这一点。你将如何实现这个逻辑?

我必须担心上溢/下溢,因为Instant.MAXInstant.MIN被传递给此代码所在的方法。

0 投票
1 回答
73 浏览

c# - 具有计数 -1 ArithmeticFlowException 的字典返回对象

我在算术溢出中遇到问题,我已经在这个问题 [ Dictionary to ToList ArithmeticFlowException中发布了详细信息

但是我找到了原因,当我调用该方法时

它抛出溢出异常,连接数等于-1。

0 投票
0 回答
58 浏览

ssms - 算术溢出错误sql

我最初使用导入和导出向导从一个固定宽度的文件中导入了这些文件。我曾计划将有问题的字段,公司,作为数字 (8,0),但我收到有关数据类型转换失败的错误。所以我将其更改为 varchar (20) 并成功导入。表中大约有 148 万行。

现在,我正在尝试将其改回数字 (8,0) 或 INT 并且都给我一个算术溢出错误。我使用以下代码查找列中值的最大长度

select(max(len(firms)) 从 dbo.tablename 中返回值 5。

关于如何解决这个问题的任何见解?

0 投票
1 回答
3967 浏览

sql-server - int 类型的算术溢出错误,值 = 4957500001.400178

我知道过去也有人问过类似的问题,但我认为我的情况略有不同。我有一个具有对数值的列,我正在尝试使用以下公式反转它们: SELECT POWER(10,CAST(9.695262723 AS NUMERIC(30,15)))

假设该值9.695262723是该列的值之一。尝试运行此查询时,我得到一个Arithmetic overflow error for type int, value = 4957500001.400178.

另一方面,相同的查询适用于较小的值,例如SELECT POWER(10,CAST(8.662644523 AS NUMERIC(30,15)))

我怎样才能克服这个错误并计算我拥有的 log10 条目的倒数?仅供参考,表中存在的较大值(以 log10 为单位)是12.27256096.

0 投票
2 回答
306 浏览

floating-point - 不是数字 (NaN)

为什么有些数字在浮点运算中被定义为不是数字(NaN)?(虽然它们可以用 IEEE 格式表示并且确实是实数)

0 投票
1 回答
964 浏览

assembly - 不能在 MIPS 上添加两个 32 位数字

我正在尝试编写一个可以添加 2 个数字的代码,即使它们是 32 位长。但是,如果我添加两个 32 位数字,或者如果我添加两个组成 32 位数字的数字(如 2bi + 2bi),我的程序将无法工作。在第一种情况下,我收到“Invalid Interger Input”错误,在第二种情况下,我收到“Arithmetic Overflow”错误。我认为第 32 位用于“+”或“-”信号。我怎样才能解决这个问题?

0 投票
3 回答
501 浏览

c# - c#:添加两个大整数会给出错误的结果

所以我有一个添加两个整数并打印结果的代码:

但是如果在控制台中我将 int 类型的最大值放入,我不会得到异常,但结果是错误的,即使我将结果保存在 long 变量中。这是输出:

但是如果 sum 变量很长,为什么我会得到错误的结果?

0 投票
0 回答
85 浏览

c - 使用 /arch:AVX2 向指针添加 0 时出现 MSVC 编译器错误;与警告 C26451 相关

在使用 /O2、/Ob2、/arch:AVX2 标志编译以下代码后,我遇到了一个错误。我在 Win64 上使用 Microsoft Visual Studio Community 2019 版本 16.4.6。

运行以下代码会产生以下输出。请注意第一行和第三行的中间列:

在第一个循环中,我们得到000001B5B43BD9D0for malloc() + 0 * (6/2)。但是在同一个循环的第二个副本中,我们得到...C了地址。结果...0是正确的,因为 malloc 在 Windows x64 上返回一个 16 字节对齐的指针。 0 * (6/2)为 0。

第三列也有同样的问题。


看起来问题与我在第 22、23、24、30、31、32 行收到的以下警告有关。将变量l转换为 int64_t 时,我摆脱了这个问题。

警告 C26451 算术溢出:对 4 字节值使用运算符 *,然后将结果转换为 8 字节值。在调用 operator * 之前将值转换为更广泛的类型以避免溢出 (io.2)。

没关系,我可以这样解决问题,但我想了解这里到底发生了什么。对于具有相同编译标志的 gcc,我不会遇到这个问题。

0 投票
1 回答
56 浏览

c# - 如何更正将 nvarchar 转换为 sql 数据类型 numeric(9, 4) 的数字的算术溢出错误?

我的值为 2800320,我需要将其插入到 numeric(9, 4) 数据类型的表中。在我给出的代码中float.Parse(record.Substring(i, 8))。当我插入到 sql 时发生算术溢出错误。请告诉如何纠正这个?