本文整理汇总了Python中decimal.Inexact方法的典型用法代码示例。如果您正苦于以下问题:Python decimal.Inexact方法的具体用法?Python decimal.Inexact怎么用?Python decimal.Inexact使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类decimal
的用法示例。
在下文中一共展示了decimal.Inexact方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: float_to_decimal
# 需要导入模块: import decimal [as 别名]
# 或者: from decimal import Inexact [as 别名]
def float_to_decimal(f):
"Convert a floating point number to a Decimal with no loss of information"
n, d = f.as_integer_ratio()
numerator, denominator = Decimal(n), Decimal(d)
ctx = Context(prec=60)
result = ctx.divide(numerator, denominator)
while ctx.flags[Inexact]:
ctx.flags[Inexact] = False
ctx.prec *= 2
result = ctx.divide(numerator, denominator)
return result
示例2: float_to_decimal
# 需要导入模块: import decimal [as 别名]
# 或者: from decimal import Inexact [as 别名]
def float_to_decimal(f):
"""
Convert a floating point number to a Decimal with
no loss of information. Intended for Python 2.6 where
casting float to Decimal does not work.
"""
n, d = f.as_integer_ratio()
numerator, denominator = Decimal(n), Decimal(d)
ctx = Context(prec=60)
result = ctx.divide(numerator, denominator)
while ctx.flags[Inexact]:
ctx.flags[Inexact] = False
ctx.prec *= 2
result = ctx.divide(numerator, denominator)
return result
示例3: to_xdr_amount
# 需要导入模块: import decimal [as 别名]
# 或者: from decimal import Inexact [as 别名]
def to_xdr_amount(value: Union[str, Decimal]) -> int:
"""Converts an amount to the appropriate value to send over the network
as a part of an XDR object.
Each asset amount is encoded as a signed 64-bit integer in the XDR
structures. An asset amount unit (that which is seen by end users) is
scaled down by a factor of ten million (10,000,000) to arrive at the
native 64-bit integer representation. For example, the integer amount
value 25,123,456 equals 2.5123456 units of the asset. This scaling
allows for seven decimal places of precision in human-friendly amount
units.
This static method correctly multiplies the value by the scaling factor
in order to come to the integer value used in XDR structures.
See `Stellar's documentation on Asset Precision
<https://www.stellar.org/developers/guides/concepts/assets.html#amount-precision-and-representation>`_
for more information.
:param value: The amount to convert to an integer for XDR
serialization.
"""
if not (isinstance(value, str) or isinstance(value, Decimal)):
raise TypeError(
"Value of type '{}' must be of type {} or {}, but got {}.".format(
value, str, Decimal, type(value)
)
)
# throw exception if value * ONE has decimal places (it can't be represented as int64)
try:
amount = int(
(Decimal(value) * Operation._ONE).to_integral_exact(
context=Context(traps=[Inexact])
)
)
except decimal.Inexact:
raise ValueError(
"Value of '{}' must have at most 7 digits after the decimal.".format(
value
)
)
if amount < 0 or amount > 9223372036854775807:
raise ValueError(
"Value of '{}' must represent a positive number "
"and the max valid value is 922337203685.4775807.".format(value)
)
return amount