sql 相加_Java整数相加溢出怎么办?Java 8 还是厉害!
blog.csdn.net/qq_33330687/article/details/81626157
问题
在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE
解决方案
JDK8已经帮我们实现了Math下,不得不说这个方法是在StackOverflow找到了的,确实比国内一些论坛好多了
加法
public static int addExact(int x, int y) { int r = x + y; // HD 2-12 Overflow iff both arguments have the opposite sign of the result if (((x ^ r) & (y ^ r)) 0) { throw new ArithmeticException("integer overflow"); } return r;}
减法
public static int subtractExact(int x, int y) { int r = x - y; // HD 2-12 Overflow iff the arguments have different signs and // the sign of the result is different than the sign of x if (((x ^ y) & (x ^ r)) 0) { throw new ArithmeticException("integer overflow"); } return r;}
乘法
public static int multiplyExact(int x, int y) { long r = (long)x * (long)y; if ((int)r != r) { throw new ArithmeticException("integer overflow"); } return (int)r;}
注意 long和int是不一样的
public static long multiplyExact(long x, long y) { long r = x * y; long ax = Math.abs(x); long ay = Math.abs(y); if (((ax | ay) >>> 31 != 0)) { // Some bits greater than 2^31 that might cause overflow // Check the result using the divide operator // and check for the special case of Long.MIN_VALUE * -1 if (((y != 0) && (r / y != x)) || (x == Long.MIN_VALUE && y == -1)) { throw new ArithmeticException("long overflow"); } } return r;}
如何使用?
直接调用是最方便的,但是为了追求速度,应该修改一下,理解判断思路,因为异常是十分耗时的操作,无脑异常有可能超时。
推荐阅读
代码对比工具,我就用这6个
分享我常用的5个免费的在线 SQL 数据库环境,简直太方便了!
Spring Boot 三招组合拳,手把手教你打出优雅的后端接口
MySQL 5.7 vs 8.0,你选那个?网友:我继续原地踏步~
最后,推荐给大家一个有趣有料的公众号:写代码的渣渣鹏,7年老程序员教你写bug,回复 面试|资源 送一你整套开发笔记 有惊喜哦
扫码关注
sql 相加_Java整数相加溢出怎么办?Java 8 还是厉害!相关推荐
- unsigned long long 溢出 乘_Java整数相加溢出怎么办?Java8一步搞定
问题 在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如果溢出就返回Integer.MAX_VALUE 解决方案 JDK8已经帮我们实现了Math下,不得不说这个方法是在Stack ...
- 【Java】算法积累1——大整数相加
算法刚刚入门,每次记录下自己所学的知识总结以及理解,希望能够帮助大家,如有内容有错误或可改进的地方,欢迎一起探讨,一起进步,在此也要感谢WYSCODER学长给我的学习建议 目录 方法一: 思路: 代码 ...
- 两个整数相加减是否溢出
#include<stdio.h> #include<stdint.h>// 两个整数相加减,没有溢出时返回0 int tadd_ok(int x, int y) {int s ...
- 编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接、整数相加和浮点数相加。要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃。
编写一个Java应用程序,从键盘读取用户输入两个字符串,并重载3个函数分别实现这两个字符串的拼接.整数相加和浮点数相加.要进行异常处理,对输入的不符合要求的字符串提示给用户,不能使程序崩溃. pack ...
- java实现两个最大整数相加_JAVA-实现两个超大整数相加
思路: 第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置.之所以倒序存储,更加符合我们从左到右访问数组的习惯. 我们以 426709752318 + 9548125 ...
- 漫画:如何实现大整数相加
转载自 漫画:如何实现大整数相加 在程序中列出的 "竖式" 究竟是什么样子呢?我们以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤: 第 ...
- java integer 相加_Java-整数相加求和
一.设计思想 1.创建工程Sum,在包Add下添加类Sum,功能是整数相加求和. 2.输入多个整数. 3.将输入的字符串转化为数字,用import语句导入包java.util,再调用类Scanner ...
- 怎样实现大整数相加?
问题: 如果给出两个很大很大的整数,这两个数大到long类型也装不下,比如100位整数,如何求它们的和呢? 分析: 回顾起小学数学,当我们需要计算两个较大数目的加减乘除,我们是用列竖式的方式来计算的. ...
- php二进制整数相加怎么解决_PHP两个n位的二进制整数相加问题的解决
两个n位的二进制整数相加问题PHP实现,供大家参考,具体内容如下 两个n位二进制数分别存储在两个n元数组A和B中,这两个整数的和存在一个n+1元的数组C中 答: 此问题主要是考察相加进位的问题,元素1 ...
最新文章
- Mybatis和Spring整合
- pat 1123(AVL)
- 编程时程序无错却崩溃_人间真实:程序员的 60 个崩溃瞬间!
- qt利用QSplitter任意拆分窗口
- mybatisplus自动生成id_【mybatis-plus】主键id生成、字段自动填充
- HTML Layui Distpicker 住址/收货地址选择 联动选择框
- html播放监控视频教程,使用javascript实现监控视频播放并打印日志
- 软件开发过程学习笔记(一)之软件开发流程
- 厦门大学904数据结构与机器学习资料与辅导
- 10计算机语言代表什么,win10是什么编程语言写的_win10史诗般的巨型编程项目
- Linux驱动学习--V4L2框架
- 问卷调查系统的设计与实现【源码:文档:教程】
- 【经典】synergy共享鼠标键盘/一套鼠标键盘操作多台电脑
- Nacos搭建集群以及遇到的问题
- 利用Matlab考察数据的边缘正态性 作Q_Q图
- react-native 性能优化,处理卡顿
- BUG InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Pl
- 常用电子元件基础知识(图解)
- 读书是进步的源泉 | 实践是前进的基石
- Android垃圾清理功能的初步
热门文章
- 【ElasticSearch】Es 源码之 AutoFollowCoordinator 源码解读
- 【ElasticSearch】Es 源码之 PageCacheRecycler 源码解读
- 1.1.0-简介-P2-分布式系统的一些基本概念
- 【clickhouse】MergeTree引擎的固定/自适应索引粒度
- 【Elasticsearch】分片未分配 (UNASSIGNED) failed to obtain in-memory shard lock
- 【面试】面试文章积累
- 95-080-048-源码-启动-启动standalonesession
- 【Flink】Flink 系统监控指标
- RocKetMQ : MQClientException: The producer service state not OK, CREATE_JUST
- 【Java集合之Map】HashMap、HashTable、TreeMap、LinkedHashMap区别