Python浮点数格式化-Decimal

从功能上说,小数对象decimal就像浮点数,只不过它们有固定的位数和小数点,因此小数是有固定的精度的浮点值。因此,常常使用Decimal小数类型来处理固定精度的数字。

常用方法

1. 通过调用在decimal模块中的Decimal的构造函数来创建一个小数对象,并传入一个字符串。可以传递给Decimal模块整形或者字符串参数,但不能是浮点数据,因为浮点数句本身就不准确。
from decimal import getcontext, Decimal
x = Decimal('0.1')
type(x)
decimal.Decimal
y = Decimal(0.1)
type(y)
decimal.Decimal
2.通过设定有效数字,限定结果样式:
import deecimal
#设定有效位数为四位,注意这个方法只在decimal数据进行计算时才会应用
decimal.getcontext().prec = 4
decimal.Decimal(1)/decimal.Decimal(7)
Decimal('0.1429')
3.从浮点数转化为Decimal

刚刚说到,构建decimal小数类型的方法是传入一个字符串或整形参数,那么如何使浮点数转化为Decimal呢?

from decimal import * 
Decimal.from_float(12.222)
4.四舍五入定点保留小数位数
from decimal import * 
Decimal('50.5679').quantize(Decimal('0.00'))
 # 结果为Decimal('50.57'),结果四舍五入保留了两位小数
5.Decimal 结果转化为string
from decimal import * 
str(Decimal('3.40').quantize(Decimal('0.0')))
 # 结果为'3.40',字符串类型
6.浮点数格式化

如果担心使用Decimal太过精度,可以直接使用浮点数格式化来进行操作:
需要注意的是,前面用于控制精度,后面的需要是float型,输出的为str类型

comment_brief['poor_rate'] = ("%.5f" % float(comment_brief.get('poor_rate')))

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

精神抖擞王大鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值