Я работаю над чем-то, что извлекает число с плавающей запятой из строки. Я заметил, что некоторые значения приводят к немного неточным значениям с плавающей запятой. Некоторые исследования на эту тему подсказали мне либо использовать точную библиотеку с плавающей запятой, возможно, переключиться на более крупный тип данных (double) для более широкого диапазона точности, либо использовать целочисленную математику.
Я бы предпочел не делать ничего из этого (особенно последнего), а вместо этого создать функцию, которая «округляет» число с плавающей точкой до тех пор, пока оно не будет соответствовать строковому представлению. Я проделал базовые математические вычисления и понял, что это действительно произошло (по крайней мере, в моем примере).
В моем примере у меня была строка со значением «0,04». Когда я использую для него std::stof, получается значение 0,0399999991. Минимальная сумма, которую я должен добавить к этому значению с плавающей запятой, чтобы оно соответствовало строке (по крайней мере, до десятичной точки моей строки), составляет 0,0000000019, а затем преобразуется в 0,0400000010. Я понял это, просто добавляя до тех пор, пока не произошел сдвиг.
Мой вопрос: существует ли уже существующий метод такого расчета для всех чисел с плавающей запятой? Если нет, я волнуюсь, что мне придется сделать цикл, чтобы продолжать увеличиваться на 0,0000000001. Однако я не уверен, как я могу программно заключить успех, учитывая, что переключение 0,0399999991 обратно на строку снова приводит к строке «0,04»...
Подробнее здесь: https://stackoverflow.com/questions/791 ... sion-value
Могу ли я преобразовать строку в число с плавающей запятой с минимальным значением точности десятичной точки? ⇐ C++
Программы на C++. Форум разработчиков
1731782356
Anonymous
Я работаю над чем-то, что извлекает число с плавающей запятой из строки. Я заметил, что некоторые значения приводят к немного неточным значениям с плавающей запятой. Некоторые исследования на эту тему подсказали мне либо использовать точную библиотеку с плавающей запятой, возможно, переключиться на более крупный тип данных (double) для более широкого диапазона точности, либо использовать целочисленную математику.
Я бы предпочел не делать ничего из этого (особенно последнего), а вместо этого создать функцию, которая «округляет» число с плавающей точкой до тех пор, пока оно не будет соответствовать строковому представлению. Я проделал базовые математические вычисления и понял, что это действительно произошло (по крайней мере, в моем примере).
В моем примере у меня была строка со значением «0,04». Когда я использую для него std::stof, получается значение 0,0399999991. Минимальная сумма, которую я должен добавить к этому значению с плавающей запятой, чтобы оно соответствовало строке (по крайней мере, до десятичной точки моей строки), составляет 0,0000000019, а затем преобразуется в 0,0400000010. Я понял это, просто добавляя до тех пор, пока не произошел сдвиг.
Мой вопрос: существует ли уже существующий метод такого расчета для всех чисел с плавающей запятой? Если нет, я волнуюсь, что мне придется сделать цикл, чтобы продолжать увеличиваться на 0,0000000001. Однако я не уверен, как я могу программно заключить успех, учитывая, что переключение 0,0399999991 обратно на строку снова приводит к строке «0,04»...
Подробнее здесь: [url]https://stackoverflow.com/questions/79195839/can-i-convert-a-string-to-float-with-a-minimum-decimal-point-precision-value[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия