18798332503 发表于 2020-9-11 11:01:14

格式化

'{0}:{1:.2f}'.format('圆周率',3.14159)
'圆周率:3.14'
那么保留三位整数,不四舍五入要怎么弄,最好举列子讲解

suchocolate 发表于 2020-9-11 11:13:48

整数位一共就1个,你想写成 314.159 x 10-2 ?

疾风怪盗 发表于 2020-9-11 11:47:28

suchocolate 发表于 2020-9-11 11:13
整数位一共就1个,你想写成 314.159 x 10 ?

楼主的意思应该输出3.141

18798332503 发表于 2020-9-11 16:39:36

疾风怪盗 发表于 2020-9-11 11:47
楼主的意思应该输出3.141

对,就这意思,粗心了

疾风怪盗 发表于 2020-9-11 16:41:49

18798332503 发表于 2020-9-11 16:39
对,就这意思,粗心了

{:10_284:}但是我也不知道怎么才能去掉四舍五入,等大佬回复吧

18798332503 发表于 2020-9-11 16:47:27

suchocolate 发表于 2020-9-11 11:13
整数位一共就1个,你想写成 314.159 x 10 ?

粗心了,我的意思是保留三位小数,是不是写成
'{0}:{1:.3f}'.format('圆周率', 3.14159),剩下的以此类推?

疾风怪盗 发表于 2020-9-11 16:50:19

18798332503 发表于 2020-9-11 16:47
粗心了,我的意思是保留三位小数,是不是写成
'{0}:{1:.3f}'.format('圆周率', 3.14159),剩下的以此类 ...

但是这样写,还是四舍五入的,你要去掉这个四舍五入,不知道怎么弄
或者换一种方式,先str()变成字符串,切片要的位数,再float()成小数

挥舞乾坤 发表于 2020-9-11 17:46:22

from decimal import Decimal
import math

def fun(f):
    f = Decimal(f)
    r = Decimal('.001')
    return f.quantize(r, rounding='ROUND_DOWN')

def fun2(f):
    n = 3
    return math.floor(f * 10**n) / 10**n #乘以1000,向下取证,再除1000

print('{0}:{1:.3f}'.format('圆周率', fun2(3.1415926)))
直接格式化目前没有想到好的办法,只有先把浮点数处理一下,这两个函数都行

18798332503 发表于 2020-9-12 08:05:08

挥舞乾坤 发表于 2020-9-11 17:46
直接格式化目前没有想到好的办法,只有先把浮点数处理一下,这两个函数都行

有点儿高深{:10_245:}

挥舞乾坤 发表于 2020-9-12 10:24:54

18798332503 发表于 2020-9-12 08:05
有点儿高深

没什么高深的,第一个函数用到的就是一个精确浮点数的模块,直接看python文档里有介绍,第二个就是取个巧,小数点先右移三位,取整,再移回来,或者干脆就转换成字符串来处理
def fun3(f):
    n = 3
    x, y = str(f).split('.')
    return '.'.join((x,y[:n]))

print('{0}:{1}'.format('圆周率', fun3(3.1415926)))
页: [1]
查看完整版本: 格式化