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

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标准。后期有时间再写一篇详细的原因。主要还是二进制位的运算区别。

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

    推荐阅读
  • 快递行业打价格战怎么应对(快递企业忙着搞促销)

    菜鸟裹裹最大的优惠活动就是“周六免费寄件日”,该活动推出免首重券,需要用户领取使用。除了以上这些优惠,顺丰、菜鸟裹裹、京东快递还有付费会员和充值返现优惠。顺丰早就推出了SVIP,目前有月卡、季卡和年卡,不同的会员卡发放不同额度的优惠券。菜鸟裹裹VIP会员卡的活动目前就是赠送寄件券。正因如此,利润率相对较高的社会件或许再次成为快递企业重视的市场。

  • 乳晕变大是啥原因(乳晕变大怎么回事)

    一、进行手术如果一些女性是因为遗传因素导致的乳晕变大,在这种情况下只能在后期进行手术来帮助乳晕恢复正常。

  • 用水擦屏幕会有什么后果(对屏幕的伤害有多大)

    附录:1.不是所有电脑的屏幕都不能用酒精来擦,通常来说只有镜面屏屏幕才有涂层,这种不能用酒精擦;而雾面屏用的是另外一种抗反射技术,这种一般擦了没事。一个最会开脑洞的科普博主,擅长各种奇奇怪怪的冷知识科普。

  • 咨询顾问营销是什么意思(了解一下)

    顾问是一个职位,泛指在某件事情的认知上达到专家程度的人英文名称:consultant,有某方面的专门知识,供个人或机关团体咨询的人,我来为大家讲解一下关于咨询顾问营销是什么意思?销售又称为市场学、市场行销或行销学。简称“营销”,台湾常称作“行销”;是指个人或集体通过交易其创造的产品或价值,以获得所需之物,实现双赢或多赢的过程。

  • 支付宝总账单在哪里查 在哪里看支付宝总账单

    演示机型:Iphone13&&华为P50&&小米11系统版本:iOS15.2&&HarmonyOS2&&MIUI12.5APP版本:支付宝V10.2.51.7100查支付宝总账单共需要2个步骤,本操作方法适用于Iphone13、华为P50、小米11三种机型。

  • 巨眼兔故事(法国画家揭秘超人兔)

    巨眼兔故事本报讯 近日,由法国大使馆、捷成华视网聚(常州)文化传媒有限公司、北京蒲蒲兰文化发展有限公司共同举办的“法国国宝级画家StephanieBlake中国读者见面会”在京举行,StephanieBlake和她创作的风靡世界的“超人兔”现身,讲述了创作背后的故事。2009年,蒲蒲兰引进了这只来自法国的“超人兔”,仅仅在中国10年销量就超过30万册。目前,这只风靡世界的兔子已经卖出12国版权,全球销量超过3000万册。《中国教育报》2018年09月17日第11版

  • 氢氧化钙的俗名(氢氧化钙的俗名是什么)

    接下来我们就一起去研究一下吧!氢氧化钙的俗名氢氧化钙俗称熟石灰或消石灰,是无机化合物,化学式Ca2。氢氧化钙是一种白色粉末状固体,加入水后,呈上下两层,上层水溶液称作澄清石灰水,下层悬浊液称作石灰乳或石灰浆。氢氧化钙的用途非常广泛,其优质品主要用于生产环氧氯丙烷、环氧丙烷,也可作生产碳酸钙的原料。

  • 关于水月禅寺景区继续暂停开放通知(明月禅寺开了吗)

    尊敬的市民、游客:根据睢宁县新冠肺炎疫情防控指挥部《关于做好常态化疫情防控工作的通告》要求,为避免人员聚集引发交叉感染,全力做好疫情防控工作,切实保障广大市民和游客身体健康,水月禅寺景区继续暂停开放,重新开放时间另行通知。给您带来的不便,敬请谅解!景区咨询电话:0516-68068118水月禅寺管理委员会2022年5月17日

  • 亲爱的你在哪里剧情(亲爱的你在哪里剧情简介)

    当丁宇支支吾吾的说出女儿被自己母亲弄丢了的消息时,何雪琳的整个天塌了。女儿的意外走失挖走了何雪琳心上的一块肉,家庭成员彼此之间堆积多年问题也都瞬间爆发。当历经千辛万苦,女儿媛媛终于回到了他们身边的时候,两人对爱与责任都有了更深的认识,也更加珍惜彼此间的感情,最终丁宇和何雪琳重归于好。

  • 茭白怎么保鲜(茭白保鲜方法)

    将新鲜嫩白的茭白除去2-3片叶子,直接放入蒲包中,放入清水池浸泡,要将清水没过茭白,经常换水,保持水质干净,可以保证茭白新鲜,外观肉质均佳。这种方法适用于有地窖的北方人家,将茭白摊放于地窖内的菜架上,保持窖温在0-8℃,干燥低温可以短时间的保藏茭白,此种方法会使茭白失水较快。