博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA基础02——JAVA基本数据类型1
阅读量:3966 次
发布时间:2019-05-24

本文共 1302 字,大约阅读时间需要 4 分钟。

JAVA中有八种基本类型:

四种整型:byte,short,int,long	两种浮点类型:float,double	一种字符型:char	布尔类型:boolean

各个整型和浮点型的存储需求以及取值范围

基本类型说明

原码,反码,补码

原码:	将一个数值采用二进制的方式表示,得到的就是原码。最高位为符号位,1表示负数,2表示整数。反码:	因为计算机只有加法,没有减法,在做减法运算的时候,可以认为是加上一个负数,这样可以减少计算机电路的复杂度。使用原码进行减法运算会出现问题,为了解决减法的问题,计算机引入了反码。	正数的反码与原码相同;负数的反码是由原码除符号位外,其它位取反,即“0”变成“1”,“1”变成"0"补码:	为了解决减法产生的正负零的问题,计算机引入了补码。	正数的补码与原码相同;负数的补码是由原码除符号为外,其他位取反,加一变换而成,即反码+1

为什么byte类型数值范围是127——(-128)

byte类型的表示数值范围是:-128-127,最高位是符号位,那么怎么能表示-128呢?	采用数轴的方式表示:					原码							补码	-1		1000 0001	,			1111 1111	-2		1000 0010	,			1111 1110	-3		1000 0011	,			1111 1101	.。。。。	可以看出-2的补码等于-1的补码-1,-3的补码等于-2的补码-1,依次递推,1000 0000是-128的补码,因此,byte的数值范围是-128-127。

浮点类型的精度丢失问题

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

浮点类型在计算机当中的存储float存储需求是4字节(32位), 其中1位最高位是符号位,中间8位表示阶位,后32位表示值
double存储需求是8字节(64为),其中1位最高位是符号位,中间8位表示阶位,后52位表示值

浮点类型精度的丢失

一个精度丢失的例子:

public class SimpleTest {    public static void main(String[] args) {    	System.out.println(1.2 - 1);    }}0.19999999999999996

结果明显出问题了。

将十进制的0.2转化为2进制存储为:0.0011001100110011…是一个无限循环,因此,必定在二进制转化为十进制的过程时会产生误差,必定会有精度丢失。

解决精度丢失问题

JAVA中有一个类,专门解决精度`丢失问题:BigDecimal

public static void main(String[] args) {		   BigDecimal b1 = new BigDecimal(Float.toString(1.2f));		   BigDecimal b2 = new BigDecimal(Float.toString(1));		   float s = b1.subtract(b2).floatValue(); 		   System.out.println("s----" + s);}

这样得到的结果就是正确的。

转载地址:http://ncyki.baihongyu.com/

你可能感兴趣的文章
[第16课]统计:诸方差公式
查看>>
[第17课] 随机变量介绍
查看>>
[第18课] 概率密度函数
查看>>
Pandas 精萃
查看>>
[第19课] 二项分布1
查看>>
什么是 Pandas?
查看>>
Pandas 如何创建 DataFrame
查看>>
Pandas 查看数据
查看>>
[第20课] 二项分布2
查看>>
感 冒
查看>>
职业瓶颈
查看>>
有些问题不一定要一次完成,有时候可以增加中间步骤
查看>>
Eclipse 常用快捷键
查看>>
DB2 系列文章目录
查看>>
DB2 认证路线图
查看>>
在FedaroCore4下安装DB2 Express-C
查看>>
DB2 目录结构
查看>>
DB2 配置
查看>>
DB2 CHNGPGS_THRES 参数
查看>>
DB2安全性概述
查看>>