python的四舍五入
import math>>> def cei(n,d=2):
... d = int('1' + ('0' * (d+1)))
... x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
... return x
...
>>> cei(-12.200356,4)
有人教一下这个吗,我看不懂那个d = int('1' + ('0' * (d+1)))
... x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10){:5_99:} d = int('1' + ('0' * (d+1)))
意思是把字符串'1' + ('0' * (d+1))的计算结果转为整数类型,再赋值给d
计算过程:
先括号d+1,默认d=2,这里d+1等于3
再计算乘,‘0’*3意思是把字符串‘0’重复3次,也就变成了字符串‘000’
再计算加,‘1’+‘000’,就是字符串合并,变成了字符串‘1000’
x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
这个同理:
1、n*d-5 if n<0 else n*d+5,意思是如果n<0,则结果为n*d-5,否则为n*d+5
2、其他的自己分析咯
d = int('1' + ('0' * (d+1)))
就是根据d来生成一个整数,1 加上d+1 个0 来生成。例如:d=2 1000
x = int((n*d-5 if n<0 else n*d+5)/10)/(d/10)
四舍五入分正数和负数两种情况,正数 +5,负数 -5
我们只讨论正数:
d 表示保留几位小数,如保留 2 位,就乘以 1000,再 +5
除以 10 后取整
再除以 100
页:
[1]