Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1272407
  • 博文数量: 247
  • 博客积分: 5587
  • 博客等级: 大校
  • 技术积分: 2060
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-24 13:27
文章分类
文章存档

2012年(101)

2011年(44)

2010年(102)

分类: Java

2011-11-30 14:31:44

在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之后加入的。

计算顺序:

Java代码  收藏代码
  1. package xishuo;  
  2.   
  3. public class Test {  
  4.   
  5.     public static void main(String[] args) {  
  6.   
  7.           
  8.         int[] array = new int[]{  
  9.                 5,5,5,5,5  
  10.         };  
  11.           
  12.         int i=0;  
  13.         array[i+1]=i=1;  
  14.           
  15.         for(int temp=0;temp
  16.             System.out.println(array[temp]);   //array[1]=1;  
  17.         }  
  18.     }  
  19.   
  20. }  

赋值运算符的执行顺序是从右向左,而算术运算是从左到右。先计算array[i+1],为array[1].

阅读(2958) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~