发表于: 2017-02-19 22:21:54

2 1843


今天完成的事情:

学习了基本数据类型中的浮点类型

了解了浮点数误差的情况


明天计划的事情:

学习char字符串


遇到的问题:

1)为什么会报错,以及该如何处理?

错误原因:不兼容,浮点数值默认为double类型,而第7行代码赋予的f变量为float类型

解决方法:在浮点变量对应的浮点数值后面加上字母F或f

2)为什么浮点数会存在误差?

原因:计算机是二进制的,浮点数无法使用二进制精确表示,CPU表示浮点数由两部分组成:指数和尾数。这样的表示方法一般会失去一定的精确度,产生一定的误差。


收获:

浮点型(用来表示小数)

1)float类型,又被称为单精度类型,尾数可精确到7位有效数字。在很多情况下,float类型的精度很难满足需求。

2)double类型,又被称为双精度类型,表示这种类型的数值精确度是float类型的两倍,绝大多数的应用程序都采用double类型。

3)Java浮点类型常量有两种表示方法:

十进制数形式;

科学记数法形式,比如:301e2, 301E-2

   double f1 = 314e2; //表示314*10^2 --> 31400.0

   double f2 = 314e-2; //表示314*10^(-2)-->3.14

4)浮点数值默认为double类型,如果要将其变为float类型,需要在后面加上字母F或f

5)

6)其它注意事项:

浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要时使用BigDecimal类。

最好避免在比较中使用浮点数(因为浮点数存在误差),例如:

为什么d和f的输出值都是0.1,却显示不相等呢?


返回列表 返回列表
评论

    分享到