标签: arithmetic-overflow

避免 Instant.toEpochMilli() 算术溢出

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

long seconds, millis;

seconds = deadline.getEpochSecond();

if (seconds > Long.MAX_VALUE / 1000 - 1)
   millis = Long.MAX_VALUE;
else if (seconds < Long.MIN_VALUE / 1000 + 1)
   millis = Long.MIN_VALUE;
else
   millis = deadline.toEpochMilli();
Run Code Online (Sandbox Code Playgroud)

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

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

java time arithmetic-overflow

3
推荐指数
1
解决办法
2119
查看次数

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

t-sql sql-server casting logarithm arithmetic-overflow

2
推荐指数
1
解决办法
3369
查看次数

算术溢出取决于按列分组

我收到此错误,但仅在按特定列分组时出现:

Arithmetic overflow error converting expression to data type int.
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么。这是导致它的查询(总和函数是罪魁祸首):

SELECT  a.AtgardAvvattningId, 
        a.ObjektId,
        sum(p.SlutLopLangd - p.StartLopLangd) As TotalLangd
    FROM AtgardAvvattning a 
        INNER JOIN Objekt o ON o.ObjektId = a.ObjektId 
        INNER JOIN Position p ON p.AvvattningAtgardId = a.AtgardAvvattningId 
        INNER JOIN Vna v ON v.PositionId = p.PositionId 
    WHERE v.OID IN (...) 
    GROUP BY a.AtgardAvvattningId, a.ObjektId, o.AtgardsDatum
    ORDER BY a.ObjektId
Run Code Online (Sandbox Code Playgroud)

p.SlutLopLangd 和 p.StartLopLangd 都是 int 列。如果我在求和之前将值转换为 bigint,它会起作用:

    sum(CONVERT(bigint, p.SlutLopLangd - p.StartLopLangd)) As TotalLangd
Run Code Online (Sandbox Code Playgroud)

给出这个结果:

AtgardAvvattningId 对象ID 总面积
直流9... 9B2... 25684
儿童早期发展... 9B2... …

sql sql-server arithmetic-overflow

1
推荐指数
1
解决办法
254
查看次数

标签 统计

arithmetic-overflow ×3

sql-server ×2

casting ×1

java ×1

logarithm ×1

sql ×1

t-sql ×1

time ×1