一个小程序笔记-java中浮点型细节
来源:互联网 发布:dorado js 编辑:程序博客网 时间:2024/05/22 07:46
public class day01_01 {
public static void main(String[] args) {
double da = 9.1234567890123456789;
double db = 9;
float dc = 9.123456789f;
// float dd = 9.1; //ERROR:丢失精度,不能自动转换。
System.out.println(da); // 精度位(有效位):16位
System.out.println(db);
System.out.println(dc); // 精度位(有效位):7位
}
}
运行结果:
9.123456789012346
9.0
9.123457
由运行结果可以得出:
1、double类型数据的精度:16位
double的数据存:1个符号位、11个指数位、52个尾数位
所以它的精度可以表示到:2^52=4503599627370496;
2、float类型数据的精度: 7位
Float的数据存储:1个符号位、8个指数位、23个尾数位
所以它的精度可以表示到:2^23=8388608;
3、在使用字面值赋值时需要注意满足两个条件:
(1)字面值的值不能超了自己本身的范围。eg:int ax = 2^31;//error
(2)字面值的值不能超了赋值对象的范围。eg:byte bx = 128; //error
4、在使用变量赋值时需要注意:
不能使用变量给小类型的变量赋值。 eg:int ax = 11; byte bx = ax; //error
5、浮点类型的字面量默认是double型的。
需要注意的是上述程序中,float dd = 9.1;满足字面值赋值条件为什么还会报错?而同样的byte bx = 11;就不会报错呢?
原因:
在这里,需要注意的是 浮点型类型处理的都是小数。操作不当会丢失精度。因为默认的浮点型字面值是double型的 是16位的精度,而float的精度只有7位。所以,在赋值时就会丢失精度,Java程序是禁止这种隐式转换的。除非自己清楚并容许精度的丢失。在自己的可控范围内进行类型转换。float dd = 9.1f;而整型类型数据不存在丢失精度的问题, 只要满足上述两个字面值赋值条件就能保证数据的精确性。
- 一个小程序笔记-java中浮点型细节
- java中的一个画图小细节
- 程序中,浮点型存储
- 一个java小程序
- 一个java小程序
- 一个Java小程序
- java中容易忽略的小细节
- jQuery一个小细节
- 一个小细节
- 一个小细节
- java中一个关于倒序链表的小程序
- 一个java数数小程序
- 有一个Java小程序
- 一个JAVA万年历小程序
- 每天一个java小程序
- 每天一个java小程序
- java的一个小程序
- Java的一个小程序
- Shell脚本:判断用户和用户组是否已经存在/创建用户和用户组
- opencv学习笔记之六 颜色空间的转换
- Eclipse中打开windows资源管理器或打开文件夹的设置!(实例)
- vertical-align
- OpenCV学习: 轮廓的特征矩Moment
- 一个小程序笔记-java中浮点型细节
- 通过id和class删除html元素
- CorePlots 不支持64位解决方案 以及 CorePlots 相关
- 【第一次作业】
- linux模块基础
- 网上交易安全之九阳神功-使用JAVA调用U盾进行客户认证的total solution
- 单例模式
- Android 中主题已经设置,但是在某些Activity 中无效
- Quick cocos2dx-Lua(V3.3R1)学习笔记(5)----让精灵动起来吧,使用序列帧动画