处理一个数据文件,发现数据不一致,小数点后有三位、四位、六位、更多位。部分还进行四舍五入。
需要对数据文件进行处理。如果有效位超过6位,则四舍五入。如果小于6位,则保持原来的数字不变。
考虑两种情况:
小数点后无数字:判断数字有效位(len(str(num))-1)是否超过6,超过则通过整除去尾,没有则返回
小数点后有数字:判断数字有效位(len(str(num))-1)是否超过6,超过则四舍五入round(f, n – len(str(int(f)))),没有则返回。
推荐学习《Python教程》
代码:
defformat(f,n): ifround(f)==f: m=len(str(f))-1-n iff/(10**m)==0.0: returnf else: returnfloat(int(f)/(10**m)*(10**m)) returnround(f,n-len(str(int(f))))iflen(str(f))>n+1elsef
注意:
round不是简单的四舍五入
round()如果只有一个数作为参数,不指定位数的时候,返回的是一个整数,而且是最靠近的整数(这点上类似四舍五入)。但是当出
现.5的时候,两边的距离都一样,round()取靠近的偶数,这就是为什么round(2.5) = 2。当指定取舍的小数点位数的时候,一般情况也是
>>>round(2.635,2) 2.63 >>>round(2.645,2) 2.65 >>>round(2.655,2) 2.65 >>>round(2.665,2) 2.67 >>>round(2.675,2) 2.67原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容