第五章:数学运算-decimal:定点数和浮点数的数学运算-Decimal

第五章 数学运算
5.1 decimal:定点数和浮点数的数学运算
decimal模块实现了定点和浮点算术运算,使用的是大多数人所熟悉的模型,而不是程序员熟悉的模式(即大多数计算机硬件实现的IEEE浮点数运算)。Decimai实例可以准确地表示任何数,对其上或其下取整,还可以限制有效数字个数。

5.1.1 Decimal
小数值被表示为Decimal类的实例。构造函数取一个整数或字符串作为参数。在使用浮点数创建Decimal之前,可以先将浮点数转换为一个字符串,以使调用者能够显式地处理值的位数,因为如果使用硬件浮点数表示则可能无法准确地表述。或者,类方法from_float()可以把一个浮点数转换为精确的小数表示。

import decimal

fmt = '{0:<25} {1:<25}'
print(fmt.format('Input','Output'))
print(fmt.format('-' * 25,'-' * 25))

# Integer
print(fmt.format(5,decimal.Decimal(5)))

# String
print(fmt.format('3.14',decimal.Decimal('3.14')))

# Float
f = 0.1
print(fmt.format(repr(f),decimal.Decimal(str(f))))
print('{:<0.23g} {:<25}'.format(f,str(decimal.Decimal.from_float(f))[:25]))

浮点值0.1并没有被表示为一个精确的二进制值,所以float的表示与Decimal值不同。在这个输出的最后一行,完整的字符串表示被截断为25个字符。
运行结果:
在这里插入图片描述
Decimal还可以由元组创建,其中包含一个符号标志(0表示正,1表示负)、由数位组成的一个tuple以及一个整数指数。

import decimal

# Tuple
t = (1,(1,1),-2)
print('Input  :',t)
print('Decimal:',decimal.Decimal(t))

基于元组的表示在创建时不太方便,不过它提供了一种可移植的方式,这样可以导出小数值而不损失精度。元组形式可以通过网络传输,或者在不支持精确小数值的数据库中存储,以后再转换回Decimal实例。
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值