python 截断的种种

Python中数值截断问题主要出现在除法运算中,2.x和3.x版本处理方式不同。2.x版会进行真实除后再进行地板除,而3.x版直接进行真实除。若需要简单截断,可以使用`math`包或`int()`方法。

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

python数值截断问题多产生在除法中,而且2.x和3.x对除法的处理不尽相同,在此简单总结。

cpp中,/为简单截断

    printf("%f\n",double(11/3));
    printf("%f\n",double(11.0/-3));
    printf("%f\n",double(11/-3));
    printf("%f\n",double(11.0/-3));
    输出:
    3.000000
    -3.666667
    -3.000000
    -3.666667

python中,//为floor除

# coding=utf-8
__author__ = 'baodong'

print(11/3)
print(11.0/3)
print(11/-3)
print(11.0/-3)

print('-----')

print(11//3)
print(11.0//3)
print(11//-3)
print(11.0//-3)

2.x,真实除再floor,根据两个除数类型返回结果:

3
3.66666666667
-4
-3.66666666667
-----
3
3.0
-4
-4.0

3.x除法就是真实除:

3.6666666666666665
3.6666666666666665
-3.6666666666666665
-3.6666666666666665
-----
3
3.0
-4
-4.0

so,python里除法都不是默认简单截断的。
特别需要截断,用math包。或者int()方法。【兼容

#截断
import math
math.trunc(-3.6) #-3
math.trunc(3.6) #3
int(-3.6) # -3
int(3.6) # 3

# 四舍五入,兼容
round(3.6) # 4.0
round(3.3) # 3.0
round(-3.6) # -4.0
round(-3.3) # -3.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值