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

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

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

    推荐阅读
  • sata设置ahci还是raid(IDEAHCIRAID三种硬盘模式有什么区别)

    IDE、AHCI、RAID三种硬盘模式有什么区别IDE模式IDE是表示硬盘的传输接口。IDE模式可以通过映射通吃SATA硬盘,由于无需加载驱动程序,它的兼容性能超强,适用WinXP和Win7/8系统。AHCI模式原生支持SATA硬盘,它的优势在于它能够将NCQ技术充分发挥作用,或者说AHCI是现有的SATA硬盘主控接口中,除了复杂的磁盘阵列模式之外,最能发挥SATA硬盘性能。Win7/8系统完美支持AHCI模式,对WinXP兼容性不佳。

  • 快递面单泄露事件获利3000万(快递业泄露个人信息调查)

    11月17日,圆通速递称“疑似有加盟网点个别员工与外部不法分子勾结,利用员工账号和第三方非法工具窃取运单信息,导致信息外泄。”但圆通的回应未明确指出“内鬼”外泄快递用户信息的规模及贩卖金额等情况。张某伙同高某多次发布购买、租用快递查询系统账号的信息,并以每天1000元的价格将得到的账号信息贩卖给河南籍男子马某。记者进一步调查发现,除了圆通,市面上其他快递公司也存在“内鬼”参与贩卖快递用户信息的现象。

  • 女人必吃的暖宫水果有哪些(哪些水果宫寒女人不宜多吃)

    女人必吃的暖宫水果有哪些女士可以吃的暖宫水果比较多,比如红枣、核桃、石榴、榴莲、桃子、芒果等,都属于温性水果。如果某些女性有宫寒体质,平时在饮食方面,除了需要多吃些暖宫的食物外,比如红豆、桂圆和阿姣、牛、羊肉外,还需要多吃些温性水果,也具有暖宫效果。生果多归入寒凉的。假如确实宫寒得话那将来要少吃这种水果了。

  • 职工带薪年休假取消的规定(带薪年休假的那些事)

    春节是合家团聚的好日子。第二种情况是劳动者依据《劳动合同法》第三十八条单方解除劳动合同,一旦劳动者据此解除劳动合同行为的理由成立,则劳动者无需提前通知解除,即用人单位由于其自身原因造成未安排当年度年休假的,用人单位应当支付劳动者当年度应休未休年休假的工资报酬。

  • 求助成语填空答案(找一找下列哪个成语用错了)

    成语是汉语文化的瑰宝,也是我国传统文化中的一大特色。众人皆说,成之于语,故成语。成语有固定的结构形式,一般都是4个字,也有6个字和8个字的。因此在日程的沟通和书写中,大家都非常喜欢使用成语。“鼎力相助”是一个敬辞,指的是别人对自己的大力帮助,一般都是用在请人帮助的时候,因此“我一定鼎力相助”是一句病句。在日常沟通交流中,除了“鼎力相助”,还有许多成语非常容易被错用。

  • 霜降是秋天还是冬天(你答对了吗)

    虽然我国跨纬度比较广,但是到了霜降的世界,就算是最炎热的城市不会让人感觉到热。纬度偏南的南方地区,平均气温多在16℃左右。东北北部、内蒙东部和西北大部平均气温已在0℃以下。霜降现象出现的时间在各地都有所不同,在我国也并不是每个地方都会出现。就全年霜日而言,青藏高原上的一些地方即使在夏季也有霜雪,年霜日都在200天以上,是我国霜日最多的地方。

  • 北京车辆长期不开还用年检吗(北京车辆长期不开还用年检吗现在)

    如果驾驶的车辆不是自己名下的,既可以通过拨打机动车检测场电话的方式预约车辆年检,也可以通过“交管12123”手机APP完成“备案非本人机动车”后进行网上预约。

  • 关于李贺的资料(李贺的简介)

    河南府福昌县昌谷乡人,祖籍陇西郡。唐朝中期浪漫主义诗人,与诗仙李白、李商隐称为“唐代三李”,后世称李昌谷。诗作想象极为丰富,引用神话传说,托古寓今,后人誉为“诗鬼”。李贺是继屈原、李白之后,中国文学史上又一位颇享盛誉的浪漫主义诗人,有“太白仙才,长吉鬼才”之说。著有《昌谷集》。

  • 监控录像怎么删除(监控录像删除方法)

    以下内容大家不妨参考一二希望能帮到您!监控录像怎么删除在电脑主页面找到监控软件,鼠标右击选择“属性”选项,找到文件所在。返回电脑桌面,双击打开“我的电脑”,找到储存监控录像的文件夹。点击进入文件夹,选择自己需要删除的文件,右键选择“删除”即可。

  • 干净短句暖心家人(送给家人暖心的祝福语)

    干净短句暖心家人吉祥如意掸浮尘,花开富贵到如今,金玉满堂爱子孙,福禄寿喜满乾坤,海屋添筹古来稀,年华筵寿童颜身!晚辈祝您健康、快乐!您是我尊敬的长辈,我永远感谢您的关怀,今日为您庆寿辰,衷心祝您福满门,寿无疆!福如东海、寿比南山;日月昌明、松鹤长春;笑口常开、天伦永享。爸爸,无论您在哪儿,那里就是我们最快乐和向往的地方。外婆,生日快乐。