Fix two issues with recent changes to number display while editing them.

* Numbers with units (especially, angles) where not handled correctly
regarding number of significant digits (spotted by @brecht in T52222
comment, thanks).
* Zero value has no valid log, need to take that into account!
This commit is contained in:
2017-07-31 15:40:26 +02:00
parent 09eac0159d
commit b6cb7b2c92
2 changed files with 12 additions and 3 deletions

View File

@@ -372,6 +372,13 @@ static size_t unit_as_string(char *str, int len_max, double value, int prec, con
value_conv = value / unit->scalar;
/* Adjust precision to expected number of significant digits.
* Note that here, we shall not have to worry about very big/small numbers, units are expected to replace
* 'scientific notation' in those cases. */
const int l10 = (value_conv == 0.0) ? 0 : (int)log10(fabs(value_conv));
prec -= l10 + (int)(l10 < 0);
CLAMP(prec, 0, 6);
/* Convert to a string */
len = BLI_snprintf_rlen(str, len_max, "%.*f", prec, value_conv);