подавить «минус ноль» от кут

double value;
std::ostringstream s;
s << std::fixed << std::setprecision(3) << value;

когда value бродит в диапазоне -1.0e-14 в 1.0e-14, s мерцает между "0.000" а также "-0.000",
Существует ли чистый способ подавления знака минус, который указывает только на нерелевантный шум на десять десятичных знаков ниже?

(Менее общий случай cout << ....)

Каков наилучший способ избежать отрицательного нуля на выходе? решает поверхностные проблемы Его ответ, округляя до нужного числа значащих цифр до переходя к <<, это много вычислений по сравнению с «просто отбросить чертов минус, если все цифры равны нулю».

1

Решение

Даже если ничего в <iomanip> можно настроить фактический поток, мы можем, по крайней мере, не зависеть от значения, переданного setprecision(), как это:

const std::string& t = s.str();
return t.find_first_of("123456789") == t.npos && t[0] == '-' ?
t.substr(1) : t;

Если цифры из 1..9 не найдены, то все цифры должны быть 0.

Кроме того, если он начинается с минуса, пропустите этот символ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]