Python number dig1

本文介绍了Python中数值处理的几个核心技巧,包括数值的取整、精确计算、格式化输出及不同进制间的转换。通过使用内置函数和decimal模块,可以有效地解决数值计算中的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 对数值进行取整

round(value,ndigits)
ndigits代表的是你要保留的小数的位数
当某个数值恰好等于两个数值的一半时,取整操作会取值到离该值最近的那个整数上,如1.5和2.5都会取到2(Python3版本)
这里写图片描述

当传递给round的ndigits是负数的时候,取整会对应到-1十位、-2百位、-3千位…
这里写图片描述
取整和格式化不能混为一谈

2. 执行精确的小数计算

一般不需要通过浮点数取整来修正精度上的问题,如果说避免误差的行为非常的重要,那么可以使用decimal模块

>>> a=2.1
>>> b=3.2
>>> c=a+b
>>> c
5.300000000000001

对于一般浮点运算出现误差是因为底层CPU的浮点运算单元和IEEE 754浮点算术标准的一种特性。由于python的浮点数类型保存的数据采用的是原始表示形式,所以如果用到float实例就无法避免这些误差,如果,那么就要使用decimal模块了
在定义的时候就要使用
这里写图片描述
decimal模块的主要功能是允许控制计算机过程的各个方面,这包括数字的位数和四舍五入。要做到这些就需要创建一个本地的上下文环境然后修改设定:

from decimal import localcontext
a= Decimal("1.3")
b= Decimal("1.7")
print(a/b)
#0.7647058....
with localcontext() as ctx:
ctx.prec=3
print(a/b)
#0.765
with localcontext() as ctx:
ctx.prec=50
print(a/b)
#0.7647058....

其实对于精度的要求主要在于你所处的领域,一般而言,这些细小的误差都是可以接受的,但是在例如金融领域内就不容许任何微小的误差存在,所以decimal模块只是作为一种规避错误的方法,并不是必须。

3. 数值的格式化输出

如果只是对一个单独的数值做格式化输出的话我们使用内建的format()函数即可

x=1234.56789
##Two decimal places of accuracy
format(x,'0.2f')
##Right justified in 10 chars,one-digit accuracy
format(x,'>10.1f')
##Left justified
format(x,'<10.1f')
##Centered
format(x,'^10.1f')
##Inclusion of thousands separator
format(x,',')
format(x,'0,.1f')

如果想要使用科学计数法只需要把f改为e或者E即可:

format(x,'e')
format(x,'0.2E')

在很多的Python代码中,常用%操作符来对数值做格式化处理

'%0.2f' % x
'%10.1f' % x
'%-10.1f' % x

4. 对二进制、八进制、十六进制的数值做转换或者输出

要将一个整数转换为二进制、八进制或者十六进制的文本字符串形式,只要分别使用内建的bin(),oct(),hex()函数即可
如果不希望出现’0b’,’0o’,’0x’这样的前缀,可以使用format()函数即可

format(x,'b')
format(x,'o')
format(x,'x')

要将字符串形式的整数转换为不同的进制,只需要使用int()函数再配合具体的进制即可
注意:在Python中处理八进制的语法和操作与其他编程语言稍有不同,例如

>>>mport os
>>>os.chmod('halo.py',0755)
  File "<stdin>", line 1
     os.chmod('halo.py',0755)

SyntaxError :invalid token
请确保在八进制数前添加0o前缀:
os.chmod('halo.py',0o755)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值