Math: As unit conversion algorithm fails with high precision, make significant digits matter.

This commit is contained in:
Valentin Lorentz 2013-01-11 18:14:11 +01:00
parent 018ee3456d
commit ea63da3e7d

View File

@ -308,9 +308,19 @@ class Math(callbacks.Plugin):
Converts from <unit> to <other unit>. 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))