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

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

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

基础数据类型的相互转换在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标准。后期有时间再写一篇详细的原因。主要还是二进制位的运算区别。

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

    推荐阅读
  • 黄金屋是什么意思(黄金屋解释)

    接下来我们就一起去了解一下吧!黄金屋是什么意思黄金铸造的屋子,常被用来比喻贵重的物事。黄金书屋一名出自“书中自有黄金屋,书中自有颜如玉。”这句话本出自宋皇帝赵恒:“富家不用买良田,书中自有千锺粟;安居不用架高堂,书中自有黄金屋;出门莫恨无人随,书中车马多如簇;娶妻莫恨无良媒,书中自有颜如玉;男儿若遂平生志。六经勤向窗前读。”

  • 打hpv疫苗可以吃牛羊肉吗(HPV疫苗之父研究证明)

    为了搞清楚BMMF与结直肠癌有无关系,DeVilliers与豪森展开了合作。最终研究团队在结肠癌患者肿瘤附近发现了BMMF,BMMF可以在人类细胞中繁殖,引起炎症问题,并能在人体细胞中产生所需蛋白质产物Rep。美国临床肿瘤协会表示长期过量饮酒会诱发口腔癌、喉癌等多种癌症,如今全世界每年5.5%新增的癌症病例与5.8%的癌症死亡病例都与饮酒有直接关系!

  • 红豆沙如何做(自制红豆沙的做法)

    接下来我们就一起去研究一下吧!红豆沙如何做先在锅中放4杯水,和红豆一起用中火煮,煮沸后再加1/2杯水继续煮,等它第二次沸腾后,捞出放在竹篓上沥干。将红豆再倒回锅中,将干净纱布盖在红豆上一起以小火红豆煮烂,期间水煮干时必须加水继续将红豆煮软为止。煮软后,放入筛网上以木杓一面压碎一面过滤。把剩余的1/3量全部入锅中,用木杓不停搅拌一面煮。煮好的豆沙分成鸡蛋一般大的小团,放在容器中,使之冷却即成。

  • 南宁青秀山风景区对重度残疾人一名陪护人员免门票

    享受此优待政策的人员需持有效残疾人证、身份证原件核验后入园。交通攻略:青秀山东门:乘坐33路、45路公交车至青秀山东门站下车;乘坐122路、72路公交车至李宁体育园站下车;乘坐106路公交车至青环铜鼓岭路口站下车,步行至东门。青秀山西门:乘坐B10路、32路、33路、89路、94路、121路公交车或地铁3号线至青秀山站从B出口出站,步行至西门2号门。

  • 豆角适合做什么家常菜且好吃(好吃的豆角烧茄子家常做法)

    豆角适合做什么家常菜且好吃材料:豆角,适量茄子,适量姜,适量蒜,适量青红尖椒。豆角择成约一寸的段,洗净。烧开一锅水,将豆角倒入焯水。在焯豆角时,迅速洗净茄子切好,放入水中浸泡。炒锅放油,烧热,下配料炒香。再将茄子从水中捞起迅速放入锅中炒匀。再放少许香醋,醋不可多放,放的合适的话会起到很好的调鲜作用,又不会有很明显的酸味。茄子和豆角都软烂熟透了,放适量盐和鸡精,炒匀即可出锅。

  • 琶洲在哪里 琶洲在哪里?

    琶洲街道在广东省广州市海珠区。琶洲街道因境内有琶洲岛而得名,琶洲岛原为江心洲,地形似琵琶而名琵琶洲,简称琶洲。2011年,琶洲街道社会商品销售总额达27.50亿元。教育事业琶洲街道境内有3所中专、1所中学、2所小学、5所幼儿园。截至2011年末,琶洲街道境内体育设施有逸进羽毛球馆、奥比亚体育馆及总面积8000平方米的文体中心;健身路径10条,健身点32个。

  • 魅族一键截取长图的方法(魅族一键截怎样取长图)

    魅族Note5手机回到手机桌面,点击设置,设置里的项目多,接下来我们就来聊聊关于魅族一键截取长图的方法?以下内容大家不妨参考一二希望能帮到您!魅族一键截取长图的方法魅族Note5手机。同时按下音量减号键和手机的电源键。几秒后,屏幕就会出现截图界面。按住下箭头,向下拉。下面出现网络,意思是向下移动了一个网络的距离。看下图就是我们截取的长图。

  • 长期吃素也会得脂肪肝吗(长期吃素会不会得脂肪肝这个病)

    引起脂肪肝的原因有很多,除了肥胖,还有营养不良、快速减肥等多种原因,长期吃素也有可能会得脂肪肝。首先,素食缺乏蛋白质,长期吃素的人很有可能处于营养不均衡的状态,身体也会缺乏蛋白质。蛋白质是脂肪转运的载体,如果缺少蛋白质,那么脂肪就会堆积起来。这些食物和大鱼大肉一样都有很高的热量,碳水化合物也可以被转变成为脂肪储存在肝脏内的,因此长期吃素也会得脂肪肝。

  • 辣椒油最简单的做法(怎么做辣椒油)

    以下内容大家不妨参考一二希望能帮到您!辣椒油最简单的做法备料:干辣椒面100克、白芝麻10克、食用油400克、大料3颗。上好的辣椒粉,胡椒粉,五香粉,芝麻,盐,混合后放到一个不怕烫的容器里。锅中倒入适量油,凉油时放入几粒大料。待油烧至9成热(冒烟)时,关火,捞出大料。待油稍凉时分次倒入辣椒面中,搅匀,凉后即可使用。剩余的红油辣椒可以装瓶使用。

  • 肖恩克的救赎哪年出来(肖恩克的救赎三个出狱的人)

    在这部长达142分钟的影片中,我们只看到了三个人成功出狱了,其中一个是男主安迪、一个是安迪的好友瑞德,另一个是布鲁克斯。最终老布只能选择走向死亡来结束这种束缚。我认为导演是想告诉我们:没有安迪,老布就是瑞德和其他绝大多数囚犯们的未来,他们会步入老布的后程。剧中照片其次出狱的是主角安迪,他是狱中唯一真正的人。瑞德可以说是一个“Strongman”,而安迪则是一个“Greatman”。