-1 * var;
string asd(std::format("{:.2f}", var);
вывожу результат все работает, за исключением того что если число 0 то вижу -0. Почему -0 и что делать?
Почему бы не написать var = -var;
Потому что в float/double у нас есть три ноля: ноль, + ноль и - ноль. Первый истинный ноль, вторые два - очень маленькие результаты вычислений, где произошла потеря значимости, соотв. положительного и отрицательного вида. Не делай операции - не будешь получать -0
Ну хорошо, даже если это так, и этого не избежать, что в этом плохого ?
Да действительно, сейчас прочитал про стандарт, ну хорошо тогда буду проверку делать если нет другого способа
выводи с большей точностью, лучше вообще в формате G
Обсуждают сегодня