From 40c7c4290c54949a1d16a5b5b095d92fd1a01903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20M=C3=A1t=C3=A9=20R=C3=B3bert?= Date: Fri, 14 Aug 2020 11:31:33 +0200 Subject: [PATCH] Add option for rounding to set number of decimals Fixes #141 --- scour/scour.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/scour/scour.py b/scour/scour.py index a5559c6..df85254 100644 --- a/scour/scour.py +++ b/scour/scour.py @@ -2821,8 +2821,8 @@ def parseListOfPoints(s): i = 0 while i < len(nums): try: - nums[i] = getcontext().create_decimal(nums[i]) - nums[i + 1] = getcontext().create_decimal(nums[i + 1]) + nums[i] = getcontext().create_decimal(nums[i]).quantize(roundingQuantum) + nums[i + 1] = getcontext().create_decimal(nums[i + 1]).quantize(roundingQuantum) except InvalidOperation: # one of the lengths had a unit or is an invalid number return [] @@ -3641,8 +3641,10 @@ def scourString(in_string, options=None): # to minimize errors global scouringContext global scouringContextC # even more reduced precision for control points + global roundingQuantum scouringContext = Context(prec=options.digits) scouringContextC = Context(prec=options.cdigits) + roundingQuantum = Decimal(10) ** (-options.rounding) # globals for tracking statistics # TODO: get rid of these globals... @@ -3976,6 +3978,9 @@ _option_group_optimization.add_option("--set-c-precision", action="store", type=int, dest="cdigits", default=-1, metavar="NUM", help="set number of significant digits for control points " "(default: same as '--set-precision')") +_option_group_optimization.add_option("--set-rounding", + action="store", type=int, dest="rounding", default=9, metavar="NUM", + help="set number of digits after decimal point (default: %default)") _option_group_optimization.add_option("--disable-simplify-colors", action="store_false", dest="simple_colors", default=True, help="won't convert colors to #RRGGBB format")