首页 > 编程语言 >Java--大数运算时的溢出问题

Java--大数运算时的溢出问题

时间:2023-07-03 22:57:03浏览次数:51  
标签:Java 运算 大数 -- money long years int total2

Java--大数运算时的溢出问题

一、前言

​ JDK7新特性,数字之间可以用下划线进行分割,便于阅读。

二、代码示例

public class Demo01 {
    public static void main(String[] args) {
        int money = 10_0000_0000;
        int years = 20;
        int total1 = money * years;
        System.out.println(total1);//输出-1474836480,计算时内存溢出
        long total2 = money * years;
        System.out.println(total2);//输出-1474836480,默认是int,转换之前已经存在问题了
        long total3 = money * ((long)years);
        System.out.println(total3);//输出20000000000,先把任意一个操作数转换为long类型
    }
}

解析:

​ int类型变量的取值范围只有[-231,231-1),即[-2147483648,2147483648)。

​ 因此,当计算money*years时,total已经超出int类型变量的取值范围,此时输出的结果错误。

​ 即使将total2声明为long类型也没用,因为程序执行时按照先进行乘法运算,再进行赋值,因此,当计算money*years时,此时的计算结果已经超出了int类型变量的取值范围了,将其赋值给long类型的total2,最终输出的结果也同样是错误的。

​ 因此,只有在进行乘法运算的时候,先将两个操作数中的任意一个强制转换为long类型,再进行乘法运算,此时的运算结果,程序会自动转换为long类型,因此最终total3的计算结果就是正确的。

标签:Java,运算,大数,--,money,long,years,int,total2
From: https://www.cnblogs.com/hwmWorld/p/17524366.html

相关文章

  • SequoiaDB分布式数据库2023.6月刊
    本月看点速览全球溯源中心系列成果发布,巨杉数据库受邀出席聚焦产业升级,斩获新一代信息技术创新企业推进产业生态,赋能行业发展青杉计划2023已开启,一起攀登更高的“杉” 全球溯源中心系列成果发布,巨杉数据库受邀出席6月19日,“链接世界预鉴未来”——全球溯源中心系列......
  • mysql windows安装
    1.首先下载mysqlhttps://www.mysql.com/downloads/ 2.解压到D盘。在解压后的文件夹里创建一个data文件夹和一个my.ini文件my.ini文件夹内容路径根据自己存放解压位置修改一下,数据库存放目录自己建一个[mysql]#设置mysql客户端默认字符集default-character-set=utf8m......
  • 数据结构与算法(一): 稀疏数组
    问题引入在五子棋游戏或类似的游戏中,我们可以把整个棋盘想象成是一个有规律的二维数组,其值由0、1、2三个数字组成,0代表空白区域,1代表白子,2代表黑子。这种情况:即当一个数组中大部分元素为0或者为同一值时,存储该数组数据可以使用稀疏数组来对原始数组进行精简,以减少原始数组中无用......
  • 多线程
    扩展:tomcat最大并发连接数200个1.什么是进程?什么是线程?进程包含线程,一个进程挂了,线程也就挂了,一个线程挂了,其他线程不受影响,线程之间是独立的2.单核CPU和多核CPU一个CPU可以包含多个核心,一个核心只能同时执行一个线程3.线程切换从保存线程A的状态再到切换到线程B时,重......
  • 739. 每日温度
    labuladong题解难度中等1533给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0 来代替。 示例1:输入:temperatures=[73,74,75,7......
  • MySQL自动安装脚本分享
    这里分享一个我写的MySQL自动安装脚本mysql_auto_install.sh,它的功能非常简单,就是自动化安装MySQL单实例,让DBA的工作更简单、轻松一些,不用去手工安装MySQL实例。从简单重复的工作中释放出来。下面是关于mysql_auto_install.sh脚本的一些说明:1:这个脚本运行在mysql用户下(注意,root......
  • 关掉电脑屏幕大概会省电百分之多少?
     应该说视显示器的大小,为100~400W,关了省电可达60~90%  关掉电脑屏幕大概会省电百分之多少?  我来答 分享 举报 5个回答#热议# 二阳是因为免疫力到期了吗?因为你所以我Z2007-03-30 · TA获得超过13.6万个赞关注 一、主机平均150W(CPU50-95W......
  • 基於 QQ NT 架构 的QQ Windows 版本發布 9.9.0 版本,正式在官网上架!
    特色基于QQNT技术架构全面升级,使用操作更加流畅快捷。全新UI设计,界面更加简约轻盈。消息页面三栏式设计,查看信息更加流畅。多人语音视频聊天,沟通无极限。还有更多便捷小功能等待解锁哦!优化了启动速度和性能修复了若干个已知问题沒有Q盾!!!提供64位版本!......
  • Java学习第一天 / 常用的DOS命令
     #盘符命令盘名+:#查看当前目录下多有文件dir#切换目录cd(changedirectory)#回上一个步骤cd..#清理屏幕cls(clearscreen)#退出终端exit#查看电脑IPipconfig#打开应用calcmspaintnotepad#ping命令ping+......
  • JavaSE
    Java基本数据类型Java提供了八种基本类型,包括六种数字,一种字符,一种布尔:publicclassTest{publicstaticvoidmain(String[]args){inti=8;System.out.println(i);//8System.out.println(i/3);//2(int->int)Floatf=......