AK74 4 Опубликовано 23 Июля 2010 Доброго всем времени суток. Почему у меня получаются такие результаты: 8388608 + 2.555 - 8388608 = 3 ; Смахивает на округление. Попробуйте заменить 2.555 на 2.355. Получится 2? 0.123456789 * 1000 / 1000 = 0.1234567835927 ? Похожие баги я встречал у компиляторов Си, первой половины 80-х, и у SuperCalc-а (был такой предок у Exel). В документации написано, что числа в Луа "с плавающей точкой и двойной точности". Что сделать что-бы так не было? Почему предел 2^23? Не понял, что не так? 2^23 не нравится? А почему? Поделиться этим сообщением Ссылка на сообщение
AK74 4 Опубликовано 23 Июля 2010 А вот тут уже я завис, что значит "округление, только вот - не ожидал я его так быстро"? Поясните, плз. По идеи, округление "наступает" тогда, когда Вы его вызываете в явном или не явном виде. ЗЫ. Вообще-то мне тоже показалась странным такой формат представления чисел, ведь по идеи двойная точность раньше была: 1 знаковый бит, 11 бит -экспонента и 52 бита - мантиса, если склероз меня не подводит. Поделиться этим сообщением Ссылка на сообщение
AK74 4 Опубликовано 23 Июля 2010 Не знаю как Луа, но некоторые компиляторы C, допускали когда результат вычисления с плавающей точкой передавался целочисленной переменной, без вызова дополнительных функций преобразования форматов. При этом, компилятор сам генерировал код, отбрасывающий дробную часть числа, перед присваиванием. Может и здесь так же? Поделиться этим сообщением Ссылка на сообщение
AK74 4 Опубликовано 23 Июля 2010 2 Monnoroch А где я говорил обратное? Я говорил о том, что преобразование типов данных может быть явным(Паскаль/Делфи), и может быть не явным (в PHP можно значение можно присвоить и вовсе строковой переменной). Что касается double в циклах, если каждый раз происходит изврат с преобразование типов данных, да еще в нестандартный для сопроцессора формат, а потом из него уже в стандартный double, потом инкремент, а потом обратно преобразования! Не-е-е-е, вряд ли, ну не дебилы же они. Тут в чем-то другом собака порылась. Поделиться этим сообщением Ссылка на сообщение