Fix to_string_nozero formatter when rounded without any '.'.

supermerill/SuperSlicer#2172
This commit is contained in:
supermerill 2022-01-04 18:38:21 +01:00
parent 65288d3b49
commit 0c92076a14

View File

@ -35,16 +35,18 @@ std::string to_string_nozero(double value, int32_t max_precision) {
ss << std::fixed << std::setprecision(int(std::min(15 - long10, int(max_precision)))) << value;
std::string ret = ss.str();
uint8_t nb_del = 0;
uint8_t idx_char;
for (idx_char = uint8_t(ss.tellp()) - 1; idx_char > 0; idx_char--) {
if (ret[idx_char] == '0')
if (ret.find('.') != std::string::npos) {
uint8_t idx_char;
for (idx_char = uint8_t(ss.tellp()) - 1; idx_char > 0; idx_char--) {
if (ret[idx_char] == '0')
nb_del++;
else
break;
}
// remove the '.' at the end of the int
if (idx_char > 0 && ret[idx_char] == '.')
nb_del++;
else
break;
}
// remove the '.' at the end of the int
if(idx_char > 0 && ret[idx_char] == '.')
nb_del++;
if (nb_del > 0)
return ret.substr(0, ret.size() - nb_del);