[Python-ideas] Consider generalizing Decimal to support arbitrary radix

Chris Angelico rosuav at gmail.com
Wed Feb 7 18:35:51 EST 2018


On Thu, Feb 8, 2018 at 10:08 AM, Neil Girdhar <mistersheik at gmail.com> wrote:
>
> On Wed, Feb 7, 2018 at 5:52 PM Steven D'Aprano <steve at pearwood.info> wrote:
>>
>> - slower;
>> - larger errors when converting from decimal numbers (in general);
>> - larger rounding errors;
>> - larger wobble;
>
>
> I don't see why it would have any of those problems.  Base 10 isn't special
> in any way.

Base 10 *is* special, because it corresponds to what humans use. In
binary floating-point, you get weird results (by human standards) like
0.1+0.2 not being 0.3; that doesn't happen in decimal.

There is no error when converting from a string of decimal digits to a
decimal.Decimal, so presumably to avoid error, you'd have to work with
digits in the same base. The rounding errors and wobble are by
comparison with binary; you get the same problems in any other base,
without the benefit of human-friendly behaviour.

> Right, I was playing with this problem
> (https://brilliant.org/weekly-problems/2017-10-02/advanced/?problem=no-computer-needed)
> and wanted to work in base 2.  I realize it's niche, but it's not exactly a
> significant change to the interface even if it's a big change to the
> implementation.

You should be able to use the native float type for binary
floating-point. But the whole point of that challenge is that you
shouldn't need a computer.

ChrisA


More information about the Python-ideas mailing list