From ea63da3e7da922165e52038d8acbb2f01aa7c8e6 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Fri, 11 Jan 2013 18:14:11 +0100 Subject: [PATCH] Math: As unit conversion algorithm fails with high precision, make significant digits matter. --- plugins/Math/plugin.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins/Math/plugin.py b/plugins/Math/plugin.py index 8c5bbae6f..92949fb30 100644 --- a/plugins/Math/plugin.py +++ b/plugins/Math/plugin.py @@ -308,9 +308,19 @@ class Math(callbacks.Plugin): Converts from to . If number isn't given, it defaults to 1. For unit information, see 'units' command. """ + try: + digits = len(str(number).split('.')[1]) + except IndexError: + digits = 0 try: newNum = convertcore.convert(number, unit1, unit2) newNum = self._floatToString(newNum) + if isinstance(newNum, float): + # Let's add one signifiant digit. Physicists would not like + # that, but common people usually do not give extra zeros... + # (for example, with '32 C to F', an extra digit would be + # expected). + newNum = round(newNum, digits+1) irc.reply(str(newNum)) except convertcore.UnitDataError, ude: irc.error(str(ude))