0


java数据类型的转换以及精度丢失

一.浮点类型在计算机当中的存储

在这里插入图片描述
float存储需求是4字节(32位), 其中1位最高位是符号位,中间8位表示阶位,后32位表示值
double存储需求是8字节(64为),其中1位最高位是符号位,中间11位表示阶位,后52位表示值
精度丢失就是我们的位数不够表示我们整个数值了
问题原因:
首先计算机进行的是二进制运算,我们输入的十进制数字会先转换成二进制,进行运算后再转换为十进制输出。Float和Double提供了快速的运算,然而问题在于转换为二进制的时候,位数不够表示我们整个数值,有些数字不能完全转换,只能无限接近于原本的值,这就导致了在后来的运算会出现不正确结果的情况。

二、 Java数据类型及转换原则

赋值和方法调用转换规则:从低位类型到高位类型自动转换,从高位类型到低位类型需要强制类型转换:
  (1)布尔型和其它基本数据类型之间不能相互转换;
  (2)byte型可以转换为short、int、、long、float和double;
  (3)short可转换为int、long、float和double;
  (4)char可转换为int、long、float和double;
  (5)int可转换为long、float和double;
  (6)long可转换为float和double;
  (7)float可转换为double;
  其中,int转换为char类型,float类型都需要强转,会导致精度丢失
   long转换为double也需要强转,会导致精度丢失。

标签: java c++

本文转载自: https://blog.csdn.net/Estrus5/article/details/121832642
版权归原作者 江辞࿐ 所有, 如有侵权,请联系我们删除。

“java数据类型的转换以及精度丢失”的评论:

还没有评论