What kind of ugly things?

From what I've observed, it behaves as expected:
<pre>
>>> import decimal
>>> d  = [decimal.Decimal(x) for x in (0.5, 0.2, 0.3)]
>>> d
[Decimal('0.5'), Decimal('0.200000000000000011102230246251565404236316680908203125'), Decimal('0.299999999999999988897769753748434595763683319091796875')]
>>> sum(d)
Decimal('1.000000000000000000000000000')
>>> d  = [decimal.Decimal(x) for x in ('0.5', '0.2', '0.3')]
>>> sum(d)
Decimal('1.0')
</pre>

Either of these is fine. And anyway, I'm pretty sure the weights are read as numeric types, not strings.

This test was added to address a problem here: https://github.com/gem/oq-engine/blob/ca302dce8252c15f6fc71f1f8bedc82ded32cbe1/openquake/engine/calculators/post_processing.py#L82

If you remove the explicit conversion on line 85, this test will fail.