Точное преобразование чисел с плавающей точкой в строки с заданной десятичной точностью
В C преобразование числа с плавающей запятой в строку с определенной точностью и десятичные цифры требуют внимательного рассмотрения. В этом руководстве рассматриваются два распространенных решения: stringstream и функция to_chars из C 17.
Использование Stringstream
Stringstream — это универсальный инструмент для работы со строками в C . Чтобы преобразовать число с плавающей запятой в строку с заданной точностью, можно применить манипуляторы потока:
#include
#include
double pi = 3.14159265359;
std::stringstream stream;
stream - std::fixed гарантирует, что число будет представлено в нотации с фиксированной запятой, с десятичной точкой и указанным количеством цифр.
- std::setprecision(2) управляет количеством отображаемых десятичных знаков.
Использование функции to_chars (C 17 и выше)
Для для более технических целей, таких как запись данных в XML или JSON, функция to_chars, представленная в C 17, предлагает краткое решение:
#include
#include
double pi = 3.14159265359;
std::array buffer;
auto [ptr, ec] = std::to_chars(buffer.data(), buffer.data() buffer.size(), pi,
std::chars_format::fixed, 2);
if (ec == std::errc{}) {
std::string s(buffer.data(), ptr);
}
else {
// Error handling
}
- Функция std::to_chars принимает буфер (в форме std::array), число и спецификацию формата (в данном случае std::chars_format::fixed с двумя десятичными числами). мест).
- Если преобразование прошло успешно, результирующая строка создается из буфера.
Применяя эти методы, вы можете преобразовывать числа с плавающей запятой в строки в C с точным контролем над количество десятичных цифр, гарантирующее, что ваши данные будут представлены точно и в соответствии с вашими требованиями.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3