Size: a a a

2020 June 15

v

vehlwn in pro.cxx
Roman Rubanenko
можно умножать на 2, пока целое число не выйдет, а потом его еще раз проверить. Но это не звучит как лучшее решение
А теперь я храню их в двоично десятичной.
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
мне не надо "представимо", мне надо "представимо точно"
0.3 существует лишь в твоём исходном коде, при компиляции он превращается в 0.300000004, поэтому как ты будешь отличать в своей is_exact 0.3 от 0.3000000004, если они одинаковы?
источник

RR

Roman Rubanenko in pro.cxx
vehlwn
А теперь я храню их в двоично десятичной.
?
источник

AT

Anatoly Tomilov in pro.cxx
Александр Караев
0.3 существует лишь в твоём исходном коде, при компиляции он превращается в 0.300000004, поэтому как ты будешь отличать в своей is_exact 0.3 от 0.3000000004, если они одинаковы?
я привёл пример "как"
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
я привёл пример "как"
is_exact(0.3) для компилятора - is_exact(0.30000000004)
источник

AT

Anatoly Tomilov in pro.cxx
меня compile-time интересует. До компиляции
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
меня compile-time интересует. До компиляции
до компиляции есть только препроцессор
источник

AT

Anatoly Tomilov in pro.cxx
Александр Караев
is_exact(0.3) для компилятора - is_exact(0.30000000004)
is_exact это гипотетический оператор, конечно же
источник

v

vehlwn in pro.cxx
Anatoly Tomilov
мне не надо "представимо", мне надо "представимо точно"
Это эквивалентно вопросу "имеет ли число представление в виде непериодической дроби в numeric_limits::radix системе с не больше numeric_limits::digits цифр".
источник

AT

Anatoly Tomilov in pro.cxx
Александр Караев
до компиляции есть только препроцессор
нет. Есть constexpr
источник

АК

Александр Караев... in pro.cxx
Anatoly Tomilov
нет. Есть constexpr
в constexpr 0.3 уже не существует, есть только 0.300000000004
источник

v

vehlwn in pro.cxx
Что вопос? Иее754 нет в плюсах. Проверяй numeric_limits::is_iec...
источник

VS

Vlad Serebrennikov in pro.cxx
Anatoly Tomilov
меня compile-time интересует. До компиляции
compile-time это все же «в процессе компиляции»
источник

АК

Александр Караев... in pro.cxx
0.3 может существовать или как строка ("0.3"), или как некий токен для компилятора на очень ранней стадии, где вряд ли можно что-то добыть
источник

RR

Roman Rubanenko in pro.cxx
vehlwn
Что вопос? Иее754 нет в плюсах. Проверяй numeric_limits::is_iec...
как это противоречит возможности реализации арифметических операций на любых литералах(в нашем случае десятичных)?
источник

v

vehlwn in pro.cxx
Александр Караев
0.3 существует лишь в твоём исходном коде, при компиляции он превращается в 0.300000004, поэтому как ты будешь отличать в своей is_exact 0.3 от 0.3000000004, если они одинаковы?
Компелятор превращает его в нули и еденицы.
источник

AD

Andrey Davydov in pro.cxx
Anatoly Tomilov
это может быть либо встроенным в язык оператором, либо вот как то расширение g++
Как-то так: https://gcc.godbolt.org/z/pnEtZg. Проверку длины мантиссы, обработку ошибок и прочее добавьте по вкусу.
источник

v

vehlwn in pro.cxx
Roman Rubanenko
как это противоречит возможности реализации арифметических операций на любых литералах(в нашем случае десятичных)?
Реализуй. Я описал задачу, которую надо решать.
источник

RR

Roman Rubanenko in pro.cxx
vehlwn
Реализуй. Я описал задачу, которую надо решать.
умножение строки "0.314" на 2? ;)
источник

v

vehlwn in pro.cxx
Roman Rubanenko
умножение строки "0.314" на 2? ;)
Распарси в точное представление и делай че хочешь.
источник