public float getItemPrice(){

float price = book.getPrice()*quantity;
long val = Math.round(price*100);//为什么要经过这一步转换呢
return val/100.0f;
}
Math.round这个方法的作用是什么呢?

解决方案 »

  1.   

    round
    public static long round(double a)返回最接近参数的 long。通过加上 1/2 将该结果舍入为整数,取结果的基数并将其强制转换为 long 类型。换句话说,结果等于以下表达式的值: (long)Math.floor(a + 0.5d)特殊情况是: 如果参数是 NaN,那么结果是 0。 
    如果结果是负无穷大或任何小于或等于 Long.MIN_VALUE 的值,那么结果等于 Long.MIN_VALUE 的值。 
    如果参数是正无穷大或任何大于或等于 Long.MAX_VALUE 的值,那么结果等于 Long.MAX_VALUE 的值。参数:
    a - 舍入为 long 的浮点值。 
    返回:
    舍入为最接近的 long 值的参数值。
      

  2.   

    public static int round(float a)返回最接近参数的 int。通过加上 1/2 将该结果舍入为整数,取结果的基数并将其强制转换为 int 类型。换句话说,结果等于以下表达式的值: (int)Math.floor(a + 0.5f)特殊情况是: 如果参数是 NaN,那么结果是 0。 
    如果结果是负无穷大或任何小于或等于 Integer.MIN_VALUE 的值,那么结果等于 Integer.MIN_VALUE 的值。 
    如果参数是正无穷大或任何大于或等于 Integer.MAX_VALUE 的值,那么结果等于 Integer.MAX_VALUE 的值。参数:
    a - 要舍入为整数的浮点值。 
    返回:
    舍入为最接近的 int 值的参数值。