float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-38~3.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字。
当我们的计算需要使用更高的精度(超过17位小数)的时候
1 2 3 4 5 6 7 8 9
from decimal import *a = "%.30f" % (1 /3 ) a '0.333333333333333314829616256247' b = Decimal(1 )/Decimal(3 ) b Decimal('0.3333333333333333333333333333' ) >>> getcontext()Context(prec=28 , rounding=ROUND_HALF_EVEN, Emin=-999999 , Emax=999999 , capitals=1 , clamp=0 , flags=[Inexact, FloatOperation, Rounded], traps=[InvalidOperation, DivisionByZero, Overflow])
默认的context的精度是28位,可以设置为50位甚至更高,都可以。这样在分析复杂的浮点数的时候,可以有更高的自己可以控制的精度 decimal 类型是适合财务和货币计算的128位数据类型
1 2 3 4 5 6 7 8 9
>>> from decimal import Decimal>>> a = Decimal('2' )>>> b = 3.45 >>> c = Decimal(b)>>> cDecimal('3.45000000000000017763568394002504646778106689453125' ) >>> d = Decimal(str(b))>>> dDecimal('3.45' )
近期评论