From b6cb7b2c92bfa3fa111e4e363f723baadc56ed3c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 31 Jul 2017 15:40:26 +0200 Subject: 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! --- source/blender/blenkernel/intern/unit.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'source/blender/blenkernel/intern/unit.c') diff --git a/source/blender/blenkernel/intern/unit.c b/source/blender/blenkernel/intern/unit.c index c0a373395dc..f97b89f1fd5 100644 --- a/source/blender/blenkernel/intern/unit.c +++ b/source/blender/blenkernel/intern/unit.c @@ -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); -- cgit v1.2.3