mirror of
https://github.com/aljazceru/bitfinex-api-py.git
synced 2025-12-19 14:54:21 +01:00
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
import decimal as dec
|
|
|
|
class Decimal(dec.Decimal):
|
|
|
|
@classmethod
|
|
def from_float(cls, f):
|
|
return cls(str(f))
|
|
|
|
def __new__(cls, value=0, *args, **kwargs):
|
|
if isinstance(value, float):
|
|
value = Decimal.from_float(value)
|
|
return super(Decimal, cls).__new__(cls, value, *args, **kwargs)
|
|
|
|
def __mul__(self, rhs):
|
|
if isinstance(rhs, float):
|
|
rhs = Decimal.from_float(rhs)
|
|
return Decimal(super().__mul__(rhs))
|
|
|
|
def __rmul__(self, lhs):
|
|
return self.__mul__(lhs)
|
|
|
|
def __add__(self, rhs):
|
|
if isinstance(rhs, float):
|
|
rhs = Decimal.from_float(rhs)
|
|
return Decimal(super().__add__(rhs))
|
|
|
|
def __radd__(self, lhs):
|
|
return self.__add__(lhs)
|
|
|
|
def __sub__(self, rhs):
|
|
if isinstance(rhs, float):
|
|
rhs = Decimal.from_float(rhs)
|
|
return Decimal(super().__sub__(rhs))
|
|
|
|
def __rsub__(self, lhs):
|
|
return self.__sub__(lhs)
|
|
|
|
def __truediv__(self, rhs):
|
|
if isinstance(rhs, float):
|
|
rhs = Decimal.from_float(rhs)
|
|
return Decimal(super().__truediv__(rhs))
|
|
|
|
def __rtruediv__(self, rhs):
|
|
return self.__truediv__(rhs)
|
|
|
|
def __floordiv__(self, rhs):
|
|
if isinstance(rhs, float):
|
|
rhs = Decimal.from_float(rhs)
|
|
return Decimal(super().__floordiv__(rhs))
|
|
|
|
def __rfloordiv__ (self, rhs):
|
|
return self.__floordiv__(rhs)
|