给实数用千分位方法输出结果

例如:

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

 

posted on 2020-04-04 10:39  jvincent  阅读(232)  评论(0编辑  收藏  举报