(0.1+0.2)+0.3 != 0.1+(0.2+0.3)

Компилирайте и изпълнете следната програма на Java:

public class SimpleCalc{
  public static void main(String[] args){
    if( (0.1+0.2)+0.3 == 0.1+(0.2+0.3) ){
      System.out.println("Java смята правилно");
    }
    else{
      System.out.println("Какво?!?");
    }
  }
}

Защо в конзолата се изписа “Какво?!?”? Нима наистина (0.1 + 0.2) + 0.3 не е едно и също с 0.1 + (0.2+0.3)?

Този изключително прост пример на софизъм е свързан с комбинация от две основни знания. В основата лежат операциите с числа с плаваща запетая, но заедно с тях се намесва и приоритета на операциите. Добре е този пример да не се дава като първи. По-добре е първо да се изучат типовете данни и приоритет на операциите поотделно, и чак тогава да се даде като обобщаващ и свързващ знанията пример.

Leave a Reply

Your email address will not be published.