高考考试网
当前位置: 首页 高考资讯

java正数变负数变成正数(java中金额为负数设置方法)

时间:2023-05-24 作者: 小编 阅读量: 6 栏目名: 高考资讯

基础数据类型的相互转换在Java中,对于基础的数据类型转换是学习的重点之一,只有知道了转换规则才能避免转换过程中遇到的一些坑。一种由小到大的转换,不会丢失精度。另一种由大变小的强制转换,有可能有丢失精度和出错。对于基础类型的转换,Java语言一共提供了7种数值类型进行相互转换。根据现有规则把数据类型的转换分为了两种情况,一种是自动转换,另一种是强制转换。

基础数据类型的相互转换

在 Java 中,对于基础的数据类型转换是学习的重点之一, 只有知道了转换规则才能避免转换过程中遇到的一些坑。本篇就来说说数据类型之前的转换规则。

对于基础类型的转换有两种方式。 一种由小到大的转换, 不会丢失精度。另一种由大变小的强制转换, 有可能有丢失精度和出错。

对于基础类型的转换, Java 语言一共提供了 7 种数值类型进行相互转换。

根据现有规则把数据类型的转换分为了两种情况, 一种是自动转换, 另一种是强制转换。

转换规则(从小到大)

自动转换

从小转到大的范围情况下可以自动转换, 也可以叫作隐式转换。按照数据类型的从小到大自动进行转换。

对于自动转换的规则遵守下面两个规则:

  1. 对于需要转换的数据类型必须要是转换前的数据类型兼容转换后的数据类型。
  2. 转换后的数据类型的范围必须比转换前的数据类型范围大。

代码演示:

byte byteValue = 'a';// 'a' ASCII is 97short shortValue = byteValue;// 97int intValue = shortValue; // 97long longValue = intValue; // 97float floatValue = longValue; // 97double doubleValue = floatValue; // 97System.out.println(doubleValue);//97char charValue = 'a'; int intCharValue = charValue; // 97System.out.println(intCharValue);

运行查看:

‘

以上是一级一级的往上转换。 所以不会出现问题, 哪怕是跳级也是可以的。

比方说:

byte byteVal = 'b';int intVal= byteVal;

或者是:

int intVal2 = 100;double d = intVal2;

这样也没有问题。但是如果是下面这样就有问题了。

long longVal = 100;//这里会报错。Type mismatch: cannot convert from long to intint intVal3 = longVal; 

如果非要这样转,并且转换前的数据也是能够和更小类型兼容, 就需要使用强制转换。

强制转换

强制转换, 代表着数据类型的转换默认无法进行转换, 所以需要显式的进行类型转换。

强制类型转换的格式为在变量的名字前面加上括号写上基础类型。

格式:(需要转换的基础类型)变量;

long longValWait = 100;int intConvert = (long)longValWait;

想要详细的了解强制类型转换, 需要先了解下面的这个图:

占用字节大的数据类型转换字节小的就需要强制转换。 并且转换的时候需要注意丢失精度的问题。

让我看一个会丢失精度的代码例子:

定义个 short , 规矩定义的规则我们可以得知 byte 的取值范围是: -128 到 127。所以当我们定义了不在改取值范围的值时, 比方例子中的 128 就会丢失精度。 让我们看一下丢失的数值跑哪去了。

首先可以看到 short 的字节是 2 , 也就是占用 16 bit,但是 byte 只占用 1 位,也就是 8 bit。所以在转换的时候, short 的前 8 bit 被丢了。

并且在类型中, 最左侧的是符号位。8 位的符号位也就是1。在计算机处理二进制数的时候, 符号位 1 代表负值, 0 代表正值。所以后面 7 位代表数据的值。又因为负数在计算机中以补码形式存在的。 所以还需要转换成原码进行计算。也就是符号位不变的情况下,将后面 7 位二进制数即按位取反。并在最后一位加 1。

这个时候就遇到了一个特殊的情况也就是 -128 的来源。因为 +0 和 -0 是一样的。但是对于 0 带符号来说没有意义。而且会有 [0000 0000] 和 [1000 0000] 两个原码。所以也就有了现在的补码。

补码是为了解决 0 的符号两个编码的问题。在补码运算中 [1000 0000] 就是 -128。也就得出来了我们的输出值 -128。

让我们看一下 129 的计算方式:

首先知道 129 的二进制是 [1000 0001],转换成 8 bit之后就变成首尾符号位为负数,

然后得出补码 [11111 1111] 也就是 -127 了。

从这里我们也就可以根据补码知道了 byte 数据类型的取值范围:

[1111 1111] ~ [0111 1111] 也就是 -128 ~ 127。

这里总结一下原码, 反码,补码的大概含义。

原码:原码就是用第一位表示符号,其余位表示值,就如同上面的 16 位 [0000 0000 1000 0001]。

反码: 正数的反码是原码本身, 负数的反码是在原码的基础上, 其余各个位取反。

上面的值就变成:[0000 0000 1000 0001]

补码:正数的补码就是其本身, 负数的补码就是在原码的基础上, 其余的各位都取反,并在最后一位 + 1。也就是在反码的基础上 +1。

最终的补码变成:[0000 0000 1000 0001] 也就是129。

从这里也就可以看出来, 我们在进行数据处理的时候尽量不要用位数大的数据类型转换成小的数据类型, 除非你很清楚这样转换没有问题。

浮点类型的强制转换

以上说的都是整数的强制转换问题, 浮点型的也可以转换。 这里做两个演示。

这里就是要引入浮点和整型进行转换或者运算的时候出现的问题。对于金融来说, 很少使用 float 和 double 进行运算和使用。推荐使用 BigDecimal 对象。具体为什么。了解原理可以参阅 : IEEE 754标准。后期有时间再写一篇详细的原因。主要还是二进制位的运算区别。

数据类型的转换, 先说到这里吧。 关注我。 后续更多基础到实战的内容。虽慢但永不停更。

    推荐阅读
  • 王者荣耀怎么无限技能(怎样开启无限技能?)

    下面内容希望能帮助到你,我们来一起看看吧!王者荣耀怎么无限技能在进入游戏后,或者英雄升级的时候断网,然后重连。之后一直点天赋,要快然后就会有机会出现无限技能的情况啦。比如,当你一进入游戏的环节,或者是遭遇到断网需要重新再连接进入游戏的时候,一旦进入游戏,就一直快速的点击天赋,记住一定要快啊。只有这样你才有机会获得使用无限技能的希望。

  • 宁夏固原旅游景点介绍(关于宁夏固原旅游景点介绍)

    位于西吉县城北15公里的火石寨乡境内,东距六盘山140公里,须弥山景区28公里,是宁夏唯一同时拥有国家地质公园、国家森林公园的景区、国家AAAA级旅游景区、国家级自然保护区的旅游胜地。藏品中以春秋战国时期北方系青铜器和北魏、北周、隋唐时期丝路文物最富特色。在宁夏固原县须弥山南麓,有一百多处石窟,总称“须弥山石窟”,是全国重点文物保护单位。

  • 卖比亚迪汽车怎么样 比亚迪汽车怎么样值得买吗

    凭借在电子、汽车、新能源领域积累的先进技术,比亚迪全面掌握了整车、道岔、轨道梁、自动驾驶控制、转向架、车车耦合等全产业链核心技术。比亚迪的生产线可以随时调整,做出市场急需的产品。手机代工,比亚迪成为全球第二大手机厂商。比亚迪主营业务规模扩大,市场话语权进一步提升。上帝一定是看到了比亚迪无限的成长可能性。无论如何,比亚迪值得去,一定会找机会参与。

  • 最新倒车影像技术(倒车影像落伍了)

    “汽车电子狗”是一种车载装置,作用是提前提醒车主电子眼或测速雷达的存在,可防止因为超速或违规而被罚款和扣分。固定电子狗其实就是GPS经纬度数据仪,工作原理是将人工采集到的固定测速拍照电子眼的经纬度数据记录到仪器中,然后通过GPS位置对比预存到仪器中的经纬度数据,达到提示驾驶者的目的。

  • 梦见我送新衣服给别人预示什么(梦见我送新衣服给别人预示好不好)

    梦见把衣服送给别人,目前的运势亨通,诸事都能在此时如愿完成。只是完成之后的照顾及维护,必须花费心力。未来将面临运势下滑,保持退能守,不要急进。梦见送给别人衣服,金钱管理需更谨慎,免得自己都搞不清楚帐目了。金钱需要留意一下不要到处乱放,最好能集中保管。而投资上的怂恿也不要太轻易就相信投入了。还有最近有想到什么好点子可先不要说出来,还没做就先拿出来夸耀有可能被抢先一步盗用或有人刻意阻挠破坏。

  • 驾驶证电话号码网上怎么换(驾驶证电话号码网上如何换)

    接下来我们就一起去了解一下吧!驾驶证电话号码网上怎么换首先,登录交管12123,在首页点击进入业务中心。在业务须知的信息提示窗口点击。在变更驾驶证联系方式页面点击。这时候要求验证原手机号码,点击,收到信息填入后点击。

  • 补脾的食物(什么食物补脾)

    补脾的食物补脾的食物主要指的是可以起到健脾燥湿作用的饮食物,主要有莲子、薏苡仁、芡实、山药等。薏苡仁具有健脾渗湿止泻的作用,可用于治疗脾虚湿盛之水肿腹胀、食少等。山药既可补脾气、又可益脾阴,但是脾虚食少、体倦乏力、消化不良之泄泻都可食用。

  • 朱雀志皮肤展示(低配白虎志下周上线)

    低配白虎志下周上线如果老王问兄弟们,王者荣耀里鸽了最久的皮肤是哪个,兄弟们第一反应会是谁?李白典藏?四大美人?不,是五虎将们这五个皮肤绝对是王者里最多灾多难的系列皮肤没有之一,一开始打算作为猪年限定推出,后来因为被提前。

  • 糯米可以蒸肉丸子吗(蒸糯米肉丸子就要这样做)

    好吃不是问题,行动才是关键。By泡泡机用料糯米200克猪肉300克小香菇4朵生抽10克蚝油10克盐适量料酒少许白胡椒碎适量姜粉适量做法步骤1、洗净糯米提前四小时泡起来。欢迎在下方留言分享您对这道美食的建议。

  • 麻辣小龙虾做法(香辣小龙虾的家常做法)

    把龙虾刷洗干净,五成油温把龙虾加入,烤五分钟捞出,加入葱姜蒜,干辣椒花椒香叶,倒入火锅底料一起翻炒。把龙虾清洗,锅中起油,倒入豆瓣酱火锅底料,然后倒入龙虾调料,啤酒翻炒均匀。