Моя проблема в том, что я могу' t установить ширину, так как я не знаю, сколько цифр до десятичной точки. Если я устанавливаю точность, он печатает нули, даже если это единственные конечные цифры.
Я думаю, этого можно каким-то образом добиться с помощью ширины/точности/заполнения и т. д., но я не вижу путь.
Предположим, я хочу, чтобы строка помещалась в указанный fit_to, если это только возможно; в противном случае строка должна содержать минимально возможные цифры, отдавая предпочтение «100» вместо «1e2», «1000» — «1e03» или «0,01» — «1e-2» и т. д.
Можно ли этого добиться с помощью std::format (или любого другого типа форматирования std) без ручного преобразования каждой цифры из числа с плавающей запятой?
Код: Выделить всё
#include
std::string to_string_shortest(float v, [[maybe_unused]] std::size_t fit_to = 4) {
return std::format("{}", v);
}
int main()
{
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79312063/how-to-narrow-string-representation-of-float-when-possible[/url]
Мобильная версия