*Все примеры здесь рассматриваются для 64 битных чисел(все примеры аналогичны и для других значений), если не указано иное.
Рубрика «float»
Что такое Decimal64 из Decimal floating point из IEEE 754 или точные десятичные числа с плавающей запятой в компьютере
2024-08-29 в 10:58, admin, рубрики: decimal, DPD, float, floating point, компьютер, математика, плавающая запятая, плавающая точка, технологииВсе числа равны, но некоторые равнее. Как в Python сравниваются Int и Float
2024-05-31 в 20:33, admin, рубрики: cpython, float, integer, python, математикаЕщё одна причуда Python, исследование её подноготной и попытка понять, почему так случается.
Недавно в сети X был популярен этот твит (см. скриншот), и я обратил внимание. Это очередной сюрприз в Python, связанный с характерными для него уникальными деталями реализации.
Первые новинки C++26: итоги летней встречи ISO
2023-08-17 в 10:24, admin, рубрики: c++, c++26, constexpr, file, float, floating point, function, functions, hazard pointers, iso, native api, numeric, rcu, span, Программирование, С++, с++26На недавней встрече комитет C++ активно взялся за C++26. Уже есть первые новинки, которые нас будут ждать в готовящемся стандарте C++:
- улучшенный
static_assert
, - переменная
_
, - оптимизация и улучшение для
std::to_string
, - Hazard Pointer,
- Read-Copy-Update (так же известное как RCU),
native_handle()
,- целая вереница классов
*function*
, - множество доработок по
constexpr
, std::submdspan
,- и прочие приятные мелочи.
Как напечатать float
2021-12-13 в 8:42, admin, рубрики: assert, float, grisu, printf, Блог компании Конференции Олега Бунина (Онтико), вещественные числа, Совершенный код, тестирование, тестирование веб-приложений, Тестирование веб-сервисов, Тестирование мобильных приложений, тестыКазалось бы, совершенно непонятно, зачем живым людям в 2021 году решать задачу под названием «печатаем обычное вещественное число». Вроде бы это должно быть уже решено — причём примерно в тот момент, когда эти вещественные числа изобрели. Но оказывается, что нет.
Привет, меня зовут Андрей, я занимаюсь инфраструктурой поиска в Авито и сегодня расскажу, зачем это вообще нужно — печатать вещественные числа. Какие есть методы (один) решения этой боевой задачи и как это получилось у нас в проекте, в рамках наших очень странных требований. А также, зачем таки подобное, хм, умеренно эзотерическое знание, можетЧитать полностью »
Алгоритм Кэхэна: как получить точную разность произведений
2019-11-14 в 7:51, admin, рубрики: double, float, fma, simd, Алгоритмы, двойная точность, математика, погрешности округления, числа с плавающей запятойНедавно я вернулся к анализу погрешностей чисел с плавающей запятой, чтобы усовершенствовать некоторые детали в следующей редакции книги Physically Based Rendering. Числа с плавающей запятой — интересная область вычислений, полная сюрпризов (хороших и плохих), а также хитрых трюков, позволяющих избавиться от неприятных неожиданностей.
В процессе работы я наткнулся на этот пост на StackOverflow, из которого узнал об изящном алгоритме точного вычисления .
Но прежде чем приступать к алгоритму, нужно понять, что же такого хитрого в выражении ? Возьмём , , и . (Это реальные значения, которые получились у меня во время запуска pbrt.) При 32-битных значениях float получаем: и . Выполняем вычитание, и получаем . Но если выполнить вычисления с двойной точностью, а в конце преобразовать их во float, то получится . Что произошло?
Проблема в том, что значение каждого произведения может сильно выйти за нижнюю границу , где расстояние между представимыми значениями с плавающей запятой очень велико — 64. То есть при округлении и по отдельности до ближайшего представимого float, они превращаются в числа, кратные 64. В свою очередь, их разность будет кратной 64, и не останется никакой надежды, что она станет к ближе, чем . В нашем случае результат оказался ещё дальше из-за того, как два произведения были округлены в . Мы напрямую столкнёмся со старым добрым катастрофическим сокращением1.
Читать полностью »
И все-таки, почему Posit являются достойной альтернативой IEEE 754
2019-09-18 в 15:47, admin, рубрики: c++, float, posit, quire, высокая производительность, плавающая запятая, плавающая точка, Программирование, суперкомпьютеры, числа с плавающей запятойМесяц Posit объявлен на Хабре открытым, а значит я не могу пройти мимо и проигнорировать обрушившуюся на них критику. В предыдущих сериях:
Новый подход может помочь нам избавиться от вычислений с плавающей запятой
Posit-арифметика: победа над floating point на его собственном поле. Часть 1
Posit-арифметика: победа над floating point на его собственном поле. Часть 2
Испытания Posit по-взрослому
Думаю многие из вас могут с ходу вспомнить хотя бы один случай из истории, когда революционные идеи на момент своего становления наталкивались на неприятие сообществом экспертов. Как правило, виной такому поведению выступает обширный багаж уже накопленных знаний, не позволяющий взглянуть на старую проблему в новом свете. Таким образом, новая идея проигрывает по характеристикам устоявшимся подходам, ведь оценивается она только теми метриками, которые считались важными на предыдущем этапе развития.
Именно с таким неприятием на сегодняшний день сталкивается формат Posit: критикующие зачастую просто “не туда смотрят“ и даже банально неправильно используют Posit в своих экспериментах. В данной статье я попытаюсь объяснить почему.Читать полностью »
Одинарная или двойная точность?
2017-06-28 в 8:31, admin, рубрики: C, double, float, двойная точность, математика, одинарная точность, плавающая запятая, плавающая точка, ПрограммированиеВведение
В научных вычислениях мы часто используем числа с плавающей запятой (плавающей точкой). Эта статья представляет собой руководство по выбору правильного представления числа с плавающей запятой. В большинстве языков программирования есть два встроенных вида точности: 32-битная (одинарная точность) и 64-битная (двойная точность). В семействе языков C они известны как float
и double
, и здесь мы будем использовать именно такие термины. Есть и другие виды точности: half
, quad
и т. д. Я не буду заострять на них внимание, хотя тоже много споров возникает относительно выбора half
vs float
или double
vs quad
. Так что сразу проясним: здесь идёт речь только о 32-битных и 64-битных числах IEEE 754.
Статья также написана для тех из вас, у кого много данных. Если вам требуется несколько чисел тут или там, просто используйте double
и не забивайте себе голову!
Статья разбита на две отдельные (но связанные) дискуссии: что использовать для хранения ваших данных и что использовать при вычислениях. Иногда лучше хранить данные во float
, а вычисления производить в double
.
Читать полностью »
Пишите компараторы правильно
2014-12-29 в 12:32, admin, рубрики: comparable, comparator, float, java, Программирование, сравнение чисел В Java для введения порядка среди определённых объектов можно написать компаратор — класс, содержащий функцию compare
, которая сравнивает два объекта. Альтернативой компаратору является естественный порядок объектов: объект реализует интерфейс Comparable
, который содержит метод compareTo
, позволяющий сравнить этот объект с другим. Сравнивающая функция должна вернуть 0, если объекты равны, отрицательное число (обычно -1), если первый объект меньше второго, и положительное число (обычно 1), если первый больше. Обычно реализация такой функции не представляет сложностей, но имеется один случай, о котором многие забывают.
Сравнение используется различными алгоритмами от сортировки и двоичного поиска до поддержания порядка в сортированных коллекциях вроде TreeMap
. Эти алгоритмы завязаны на три важных свойства сравнивающей функции: рефлексивность (сравнение элемента с самим собой всегда даёт 0), антисимметричность (сравнение A с B и B с A должны дать разный знак) и транзитивность (если сравнение A с B и B с C выдаёт одинаковый знак, то и сравнение A с C должно выдать такой же). Если сравнивающая функция не удовлетворяет этим свойствам, алгоритм может выдать совершенно непредсказуемый результат. Причём скорее всего вы не получите никакого исключения, просто результат будет неверный.
Как обнаружилось, несоблюдение этих свойств — не такая уж редкая ситуация. Проблема возникает при сравнении вещественных чисел — float или double.
Читать полностью »
Потеря точности из Double во Float или «Куда пропадали копейки?»
2013-11-06 в 7:50, admin, рубрики: float, java, конвертация, Программирование, метки: float, java, конвертация Преобразование чисел из одного типа в другой обычно ведется таким образом, чтобы не потерять лишних чисел, т.е. из меньшего типа к более вместительному. Но что, если предыдущий разрабочик использовал конвертацию из Double во Float и стали пропадать копейки в отчетах?
В статье приводится изучение конвертации плавающих чисел в Java:
99999999.33333333 -> 100000000.0000000
98888888.33333333 -> 98888888.0000000
2974815.78000000 -> 2974815.7500000
Давайте разберемся, к чему приводит такое преобразование и почему все происходит именно так. Ведь казалось бы, раз используемые в проекте числа далеки от максимальных значений типов float и double, то конвертация его из первого во второй не должна повлечь за собой отрицательных последствий в большинстве случаев.
Читать полностью »
Жизнь без float
2012-10-15 в 0:19, admin, рубрики: css, float, inline-block, метки: css, float, inline-block Больше всего в своей работе с вёрсткой я всегда не любил свойство float
. Спустя годы, верстая достаточно непростой макет обнаружил, что использовал float
всего один раз, потом подумал и убрал его.
Почему не люблю это свойство?
Есть несколько причин. Например, для очистки всегда нужно использовать некий элемент со свойством clear
, из-за чего код засорялся. Особенно страшно было на это смотреть, когда float
подвергался список ul > li
. Приходилось или добавлять в конец ещё один li
с особым классом, или того страшнее span
или div
между последним li
и закрывающим тегом ul
(хотелось отрубить себе руку).
Ну и кто не сталкивался с неадекватным (как минимум по логике верстальщика) поведением браузера, который при нормальной, казалось бы, вёрстке шаблона в несколько колонок просто разрывал его и тогда, для лечения, призывался жуткий и прекрасный в своей жуткости .clearfix
. Работу которого способны объяснить только шаманы 90лвл.