在16进制下,也采用科学计数法表示浮点数,这时p代表以2为底数。
本例转换过程并未丢失精度。
double c = 0x1.0p-3;
System.out.println(c);//依然打印 0.125,并不是1.0
注意:
Java使用二进制数据的科学计数法来存储浮点数,采用IEEE754标准,在存储某些值时会丧精度,产生误差。如单精度类型只有32位,无法精确描述0.1:
double a = 0.1f;
System.out.println(40*a);//打印4.000000059604645
因此浮点数不适用要求精度的场合。
java中浮点数不能用八进制表示,但可以用十六进制表示,只能用指数形式表示,double d = 0x4.0;错误的。double d = 0x7.3p8f对的,指数不是用e或E,而是用p或P。
float f = 03.2f;等价于float f = 3.2f;因为没有八进制的浮点数。
数据越界
浮点数不能用==比较,浮点数精度不准确
可能大的浮点数加一个很小的数数值不变
包装类的自动拆箱装箱是在jdk1.5之后加入的。
计算顺序:
- package xishuo;
-
- public class Test {
-
- public static void main(String[] args) {
-
-
- int[] array = new int[]{
- 5,5,5,5,5
- };
-
- int i=0;
- array[i+1]=i=1;
-
- for(int temp=0;temp
- System.out.println(array[temp]);
- }
- }
-
- }
赋值运算符的执行顺序是从右向左,而算术运算是从左到右。先计算array[i+1],为array[1].
阅读(2958) | 评论(0) | 转发(0) |