【问题标题】:How Java handle integer underflows and overflows?Java如何处理整数下溢和上溢?
【发布时间】:2011-08-12 13:47:51
【问题描述】:

我了解java中的溢出,但是什么叫做下溢呢? java又是怎么处理的呢?

【问题讨论】:

标签: java overflow underflow


【解决方案1】:

下溢与上溢正好相反。

int high = Integer.MAX_VALUE;
int overflow = high + 1;

int low = Integer.MIN_VALUE;
int underflow = low - 1;

您以同样的方式处理它:确保输入不会使自己处于上溢/下溢的范围内,并让用户意识到潜在的缺点。 (以Math.abs(Integer.MIN_VALUE) == Integer.MIN_VALUE 为例。)

【讨论】:

  • 据我所知这是错误的(比较我的答案)。你能引用你的主张的来源吗?
  • Google 中“整数下溢”的第一个结果如何:cwe.mitre.org/data/definitions/191.html 请注意,浮点下溢和整数下溢是不同的概念,OP 专门要求整数下溢。
  • 我想说从 MIN_VALuE 中减去一个只是在负方向上溢出。
  • @MeBigFatGuy 从我记事起,我就听说它称为下溢。我也听说过它叫做“负溢出”。不过,我想不出“整数下溢”的另一种定义,我认为我对它的处理是恰当的。
  • @glowcoder:很公平。鉴于问题的无知性质,我忽略了标题中的 integer 并且只专注于问题中指出的 underflow 。我仍然认为下溢本身并不是溢出的对立面。对我的回答的反对使我处于一个相当孤独的位置。如果您以某种方式编辑您的答案,我可以删除我对您的答案的反对意见。请原谅我的下意识反应。
【解决方案2】:

引用Wikipedia:

术语算术下溢(或 “浮点下溢”,或者只是 “下溢”)是一个条件 可能发生的计算机程序 浮点数的真实结果 操作幅度较小 (即更接近于零)比 可表示为的最小值 中的普通浮点数 目标数据类型。

其他人似乎认为下溢与溢出完全相反,但我从未见过这个定义。

【讨论】:

    猜你喜欢
    • 2019-05-17
    • 2016-01-05
    • 1970-01-01
    • 2018-02-28
    • 2013-06-29
    • 2020-02-19
    • 1970-01-01
    相关资源
    最近更新 更多