Advertisement

float和double不适合用作计算商品金额的原因分析

阅读量:

先看现象

在处理诸如floatdouble这类浮点型数据时,常常会出现一些令人困惑的情况,或许大家并未留意,这里列举几个较为常见的实例:

典型现象(一):条件判断结果与预期不符

复制代码
 System.out.println( 1f == 0.9999999f );   // 打印:false

    
 System.out.println( 1f == 0.99999999f );  // 打印:true    纳尼?
    
    
    
    

典型现象(二):数据转换超出预期范围

复制代码
 float f = 1.1f;

    
 double d = (double) f;
    
 System.out.println(f);  // 打印:1.1
    
 System.out.println(d);  // 打印:1.100000023841858  纳尼?
    
    
    
    

典型现象(三):基础运算超出预期表现

复制代码
 System.out.println( 0.2 + 0.7 );  

    
  
    
 // 打印:0.8999999999999999   纳尼?
    
    
    
    

**典型

全部评论 (0)

还没有任何评论哟~