Java有八种基本数据类型

整形:byte,short,int,long(默认值0)

浮点:float,double(默认值0.0)

字符:char(默认值'\u0000')

布尔:boolean(默认值false)

byte       1个字节    [-2^7,2^7-1]

short      2个字节    [-2^15,2^15-1]

int          4个字节    [-2^31,2^31-1]

long       8个字节    [-2^63,2^63-1]

float       4个字节    32位IEEE 754单精度范围

double   8个字节    64位IEEE 754双精度范围

char       2个字节    [0,2^16-1]

boolean 1个字节    true/false

 

原码:数字的二进制表示,首位数字0表示正数,1表示负数

+7的原码为: 0 0 0 0 0 1 1 1
 -7的原码为: 1 0 0 0 0 1 1 1

反码:正数不变,负数为原码数值部分取反,符号位不变

+7的反码为: 0 0 0 0 0 1 1 1
 -7的反码为: 1 1 1 1 1 0 0 0

补码:正数不变,负数为反码+1

+7的反码为: 0 0 0 0 0 1 1 1
 -7的反码为: 1 1 1 1 1 0 0 1

整形在Java中是以补码的方式存储, -128表示为: 1 0 0 0 0 0 0 0

 

float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308,一般优先使用double

计算机内数据都是以二进制的方式存储,一般存储值与显示值存在差异,例如:double类型 0.4D 实际存储为0.40000000000000002220446049250313080847263336181640625

在进行计算时,特别是乘法运算时,会产生较大偏差

Java中对金额进行操作时,不要使用浮点型

可以使用字符串存储,然后用工具类将字符串格式化为BigDecimal,再进行计算

相关用法可参考:https://blog.csdn.net/MatinBell/article/details/78570880

posted on 2019-03-06 16:28  MC伍  阅读(198)  评论(0编辑  收藏  举报