(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)?
Този изключително прост пример на софизъм е свързан с комбинация от две основни знания. В основата лежат операциите с числа с плаваща запетая, но заедно с тях се намесва и приоритета на операциите. Добре е този пример да не се дава като първи. По-добре е първо да се изучат типовете данни и приоритет на операциите поотделно, и чак тогава да се даде като обобщаващ и свързващ знанията пример.
No comments yet