Python float to Decimal conversion

后端 未结 9 1953
渐次进展
渐次进展 2020-12-05 03:50

Python Decimal doesn\'t support being constructed from float; it expects that you have to convert float to a string first.

This is very inconvenient since standard

相关标签:
9条回答
  • 2020-12-05 04:41

    Python <2.7

    "%.15g" % f
    

    Or in Python 3.0:

    format(f, ".15g")
    

    Python 2.7+, 3.2+

    Just pass the float to Decimal constructor directly, like this:

    from decimal import Decimal
    Decimal(f)
    
    0 讨论(0)
  • 2020-12-05 04:44

    When you say "preserving value as the user has entered", why not just store the user-entered value as a string, and pass that to the Decimal constructor?

    0 讨论(0)
  • 2020-12-05 04:45

    The "official" string representation of a float is given by the repr() built-in:

    >>> repr(1.5)
    '1.5'
    >>> repr(12345.678901234567890123456789)
    '12345.678901234567'
    

    You can use repr() instead of a formatted string, the result won't contain any unnecessary garbage.

    0 讨论(0)
提交回复
热议问题