Java Puzzlers #1: Время для сдачи

Всем привет! Решил немного разбавить скучность бытия здесь и порешать несколько интересных задачек. Это задачки из книги Джошуа Блоха "Java Puzzlers" и не только. Да, код будет в основном на Java, но в целом будет понятно всем, кто вообще когда-то что-то писал на любом языке. Первая задача - сразу же под этим сообщением.

Комментарии (5) свернуть  |  развернуть

+1
Итак, первая задачка: пирожок нынче стоит $1.10 (дорогие нынче пирожки, но что ж), а у вас осталось только $2.00. Сколько вы получите сдачи? Программа для решения этой задачи проста (многие уже успели придумать в уме этот очень сложный алгоритм):

public class Change {
  public static void main(String args[]) {
    System.out.println(2.00 - 1.10);
  }
}

Остаётся лишь вопрос, что же мы увидим на экране? Выбираем ответы, отписываемся в комментариях, почему считаете так или иначе. Если никто не даст полный и развёрнутый ответ до вечера пятницы (23.01.2015) — конечно же всё напишу.

PS: Пользоваться IDE и прочими инструментами разрешается, но в первую очередь задачи сделаны для вас, а не для вашей IDE.
0
К сожалению, я не джавист, но если включить логику, то c двух баксов за пирожок стоимостью $1.10 я получу сдачу в 90 центов, что и подтверждает мой php-интерпретатор:
echo 2.0 - 1.1; // 0.9
Но поскольку это число с плавающей точкой:
echo gettype(2.0 - 1.1); // double
то смею предположить что сработало округление и из-за внутреннего представления этого типа при операции вычитания точность была немного потеряна и если отобразить больше знаков после запятой:
echo number_format(2.0 - 1.1, 20); // 0.89999999999999991118
то, думаю, примерно такое число мы и увидим на экране (а точность будет зависеть от операционной системы и настроек компилятора).
+1
В целом всё верно, ответ будет 0.8999999999999999 вне зависимости от ОС (просто JVM на всех операционках работает по одним стандартам).
комментарий был удален
комментарий был удален

Прокомментировать