例如:
1233123.124115
输出:
1,233,123.124,115
思路:
小数和整数处理是不一样的,整数是除以1000,小数是乘以1000 但是由于精度的问题,只能用字符的方式处理
整数部分处理。 返回的是列表(顺序相反)
def number_int(x): ls=[] while x!=0: x,l=int(x//1000),x%1000 ls.append(str(l)) return ls
小数部分处理, 返回的是列表(顺序一致)
def number_float(x): x=str(x) x=list(x) ls=[] for i in range(2,len(x),3): ls.append(''.join(x[i:i+3])) return ls
那么输出任意实数, 需要把整数部分和小数部分拆分出来
#整数的数字 def number_int(x): ls=[] while x!=0: x,l=int(x//1000),x%1000 ls.append(str(l)) ls=ls[::-1] return ','.join(ls) #只有小数的数字 def number_float(x): x=str(x) x=list(x) ls=[] for i in range(2,len(x),3): ls.append(''.join(x[i:i+3])) return ','.join(ls) #拆分实数为整数和小数 def number(x): x=str(x).split('.',1) number_int1=eval(x[0]) number_float1=eval(x[1])/10**(len(x[1])) s1=number_int(number_int1) s2=number_float(number_float1) print('{}.{}'.format(s1,s2)) number(123.334561)
>>>123.334,561