处理一个数据文件,发现数据不一致,小数点后三位、四位、六位、多位。零件也是圆形的。
需要处理数据文件。如果有效数字超过 6 位,则四舍五入。如果小于 6 位,则保持原数字不变。
考虑两种情况:
小数点后无位数:判断有效位数(len(str(num))-1)是否超过6,如果超过,以整数去除尾部,如果不,则返回
小数点后有数字:判断有效位数(len(str(num))-1)是否超过6,超过则四舍五入为round(f, n - len(str(int( f)))),否则将被退回。
推荐学习《
》
代码:
def format(f, n):
if round(f)==f:
m = len(str(f))-1-n
if f/(10**m) ==0.0:
return f
else:
return float(int(f)/(10**m)*(10**m))
return round(f, n - len(str(int(f)))) if len(str(f))>n+1 else f
注意:
round不是简单的四舍五入
如果round()只有一个数字作为参数,当没有指定位数时,返回一个整数,并且是最接近的整数(这方面类似于四舍五入)。但当
在0.5时,两边的距离是一样的,round()取最近的偶数,这就是为什么round(2.5) = 2。指定四舍五入的小数位数时,一般情况也是
使用了四舍五入规则,但是在0.5的情况下,如果要四舍五入的位数之前的小树是奇数,则直接丢弃,如果是偶数,则向上四舍五入。请参见下面的示例:
>>> 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
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python可以当黑客吗09/13
- ♥ 在哪里可以找到 python 中的简单示例10/02
- ♥ Python字符串拼接(包括字符串拼接数字)11/22
- ♥ 如何在python中创建一个全零数组08/27
- ♥ python支持字符串吗12/06
- ♥ 你是不是把Python脚本的第一行写成了“#!/usr/bin/python”!01/06
内容反馈