博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
负数取绝对值时小心越界:如Math.abs(-2147483648)
阅读量:4223 次
发布时间:2019-05-26

本文共 515 字,大约阅读时间需要 1 分钟。

在解题中,遇到使用Math.abs(int n)时,一定要考虑变量越界的问题,比如Math.abs(-2147483648)由于变量越界其结果仍为-2147483648。

1、越界现象:

Math.abs源码:

    public static int abs(int a) {

        return (a < 0) ? -a : a;
    }
-2147483648的绝对值应该是2147483648,但是int类型最大值就为2147483647,在模系统中最大值再加一会变成最小值,是一个首尾相接的循环.

总结:

1、java中使用10亿以上数字时请使用long类型,可以有效避免整数溢出。
2、对Integer.MIN_VALUE取绝对值仍为Integer.MIN_VALUE,(0x80000000按照补码取负规则还是0x80000000)。
————————————————
版权声明:本文为CSDN博主「Code-Coke」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/j572864517/article/details/106938237/

你可能感兴趣的文章
从图割到图像分割 - 多层图图割
查看>>
智能指针总结
查看>>
数学中国体力值
查看>>
数学建模十大常用算法
查看>>
C++文件操作详解
查看>>
STL标准
查看>>
Opencv的配置
查看>>
linux下gettimeofday函数windows替换方案
查看>>
GPU编解码 - 硬解码 - CUVID
查看>>
光流法(Optical Flow)
查看>>
基于CUDA的硬编解码
查看>>
OpenCV中GPU模块(CUDA)函数
查看>>
vs2010如何引用相对路径
查看>>
存取像素值操作
查看>>
Opencv调用GPU模块
查看>>
opencv读取视频文件并显示的程序详细解释
查看>>
智能视频分析
查看>>
使用opencv进行多路视频的播放
查看>>
L-K光流法
查看>>
virtual详解
查看>>