发表于: 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,却显示不相等呢?
评论