2015-05-10 8 views
1

Является ли это ошибкой в ​​jvm, код ниже дает результат: 409.99999999999994!Умножение удваивается в java дает неправильный результат

public class HelloWorld{ 
    public static void main(String []args){ 
      double d = 4.10d; 
      double d2 = d * 100d ; 
      System.out.println(d2); 
    } 
} 

изменение двойной поплавок решает проблему, но почему?

+1

Хорошо читал: http://www.drdobbs.com/jvm/javas-floating-point-imprecision/240168744 – alfasin

ответ

2

Компьютеры используют конечное количество бит для представления чисел, поэтому их невозможно точно представить. То, что вы видите, является результатом округления чисел, которые фактически может представлять компьютер.

What Every Computer Scientist Should Know About Floating-Point Arithmetic хороший читать, так как вы впервые видите это.

Смежные вопросы