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

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

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

    推荐阅读
  • 黄喉是哪个器官(黄喉的营养价值)

    跟着小编一起来看一看吧!黄喉是哪个器官黄喉的学名叫主动脉弓,即是心室出来的大动脉血管,左心室出来的动脉血管较厚,右心室出来的动脉血管较薄,可用黄喉涮烫。猪黄喉的长度约有60至70厘米可用,牛黄喉至少可用1米以上。最常吃的黄喉是属于猪体内血管的一部份,主要成分是平滑肌,属蛋白质,相对于肝、胃等内脏营养价值高一些。

  • 个人所得税怎么提现(申请退税)

    个人所得税怎么提现如果是按正规的方式,以有限公司向自然人股东分配利润这个流程走的话,就要按“股息、红利所得”,缴纳分配金额的20%作为个人所得税。如果自然人股东是以向公司借款的名义,来转走公司的资金的话,短期之内问题还不算大。但自然人股东占用公司的资金超过一年,而且未将资金用于企业的经营的话,有可能被地税以“视同分配利润”的方式,要求缴纳个人所得税。

  • 拉格朗日攻略(无尽的拉格朗日攻略)

    一个矿点,自己只能一队采,但是可以和其它人一起采。

  • 电阻在电路中的作用?(电阻在电路中的巧妙的应用)

    6.电阻电路中负反馈负反馈电路应用也是很广泛的,在下面的电路中,当三极管Q2工作在放大状态时,需要在Q2基极加一个大小合适的直流电压,以便产生一个大小合适的基极电流,电阻R2就起到这个作用,Q2基极是信号输入端,集电极时输出端,R2接在Q2的基极与集电极之间,这样该元件就构成了负反馈电路。

  • 怎么用手机打开今日头条后台(今日头条可以打开后台的方法)

    怎么用手机打开今日头条后台?接下来我们就一起去研究一下吧!进入首页之后,我们选择页面底部红色剪头处的。这时候就进入了手机的启动管理界面,我们找到今日头条,点击关闭即可。

  • 手机视频怎么在电视播放 手机视频如何在电视播放

    以海信电视为例,首先先将手机和海信电视设置在同一局域网内,手机上下载海信聚好看app。打开聚好看app,点击下面菜单中的工具,选择照片投屏。海信电视机上就会出现相应的照片了。选择一些手机里的其他电视节目,电视上也会出现相应的画面了。

  • 抓小鱼的方法妙招(抓小鱼的聪明小经验)

    跟着小编一起来看一看吧!抓小鱼的方法妙招抓鱼分为白天抓鱼和晚上抓鱼,白天抓鱼主要是将鱼从深水区赶到浅水区,再用沙子不断的缩小包围圈,这样让鱼成为“瓮中捉鳖”!当将鱼围成瓮中捉鳖的时候,一定要有一个个的“缓冲区域”,也就是防止“鱼一下子飞了出来”,鱼在没有水面可以游的时候是可以飞起来的!可以采用一些纱布网子来捕捞,这样有一种你追我赶的滋味,也就是赶着鱼儿飞快的跑,要让他们钻进自己的网中!

  • 李茶的姑妈沈腾婚礼(李茶的姑妈男主黄才伦到底是谁)

    李茶的姑妈沈腾婚礼自9月30日电影《李茶的姑妈》上映以来,就好评不断,影片和《夏洛特烦恼》、《羞羞的铁拳》一样,都改编自开心麻花最卖座的舞台剧之一。其实黄才伦是《李茶的姑妈》话剧中的男主角,已经出演了七百多次“假姑妈”这个角色。他饰演的假姑妈,画风清奇却毫无违和感,搞笑中还透露出风情万种的魅力,此次电影版男主角当然也是非他莫属。凭借天马行空的想象力,以及妙趣横生的创作想法,黄才伦被称为“喜剧鬼才”。

  • 不忘初心学雷锋(不忘初心学雷锋)

    不止3月5日,在贵阳,学雷锋活动一年365天都在持续进行,各级党委政府也一直高度重视志愿服务工作。2月17日,由中宣部、中央文明办等16个单位联合评选的2018年学雷锋志愿服务“四个100”先进典型名单公布,花溪区阳光妈妈志愿者协会、白云区大山洞社区、花溪区阳光社区三个先进典型榜上有名。2017年11月,大山洞社区荣获第四届全国未成年人思想道德建设工作先进单位,是全省三家获评单位之一,也是贵阳唯一一家。

  • 三国分回概括(三国每回的主要内容是什么)

    第二回张翼德怒鞭督邮何国舅谋诛宦竖,督邮故意刁难刘备,张飞怒不可遏,痛打了督邮一顿。董卓欲行废立之事,遭到丁原的反对,董卓用离间之计使丁原义子吕布背叛丁原,投奔了董卓。第四回废汉帝陈留践位谋董卓孟德献刀,董卓废掉少帝,立陈留王为帝,引起朝臣不满。第五回发矫诏诸镇应曹公破关兵三英战吕布,曹操在陈留起兵,发矫诏声讨董卓。吕布出关挑战,刘备兄弟三人奋勇击败吕布。