def check_and_return(self, data):
data = super(DecimalTrafaret, self).check_and_return(data)
if self.allow_nan:
if data.is_nan():
return decimal.Decimal('NaN') # avoid sNaN, -sNaN and -NaN
else:
if data.is_nan() or data.is_infinite():
self._failure('Special numeric values are not permitted.',
value=data)
if self.places is not None and data.is_finite():
try:
data = data.quantize(self.places, rounding=self.rounding)
except decimal.InvalidOperation:
self._failure('Decimal can not be properly quantized.',
value=data)
return data
评论列表
文章目录