python2 浮点数操作常见“陷阱”

(1)刚接触Python2进行除法运算可能会感动很奇怪:

>>> 3/2
1
>>> 10/3
3
>>> 
结果为整数?

思考了一会,你可能会这样改进

>>> float(3)/2
1.5
>>> float(10)/3
3.3333333333333335
>>> 
恩恩,这样的确解决了少数部分被"抛弃"的现象,但float(10)/3这样的精度可能不是你希望的。

这里给你推荐函数round(x,n)

>>> help(round)
Help on built-in function round in module __builtin__:

round(...)
    round(number[, ndigits]) -> floating point number
    
    Round a number to a given precision in decimal digits (default 0 digits).
    This always returns a floating point number.  Precision may be negative.

>>> 

(2)请思考下面这段两端代码会输出什么:

#coding=utf-8

i = 1
k = 1

while i != 1.5:
    i += 0.1
    k += 1
    if k == 10:
        print 'See you'
        break
        
print  'The value of i is {0}'.format(i)


#coding=utf-8

i = 1
k = 1

while round(i,1) != 1.5:
    i += 0.1
    k += 1
    if k == 10:
        print 'See you'
        break

print  'The value of i is {0}'.format(i)


如果得出正确答案,恭喜你!else,请看下面比较具体的解答(注:截图来自《Python核心编程》):



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值