Python 3.x 将浮点数的显示格式设置为固定长度
我在显示股价,需要显示所有浮点数,精确宽度为8位,0代表1位。有些每股价格相当高,有些则非常低 例如,182.1234567890和0.12345678901将分别格式化为: 182.1234和0.123456 对齐小数并不重要。 重要的是,输出的宽度始终为8个空格长(包括十进制) 这里有许多格式问题,但遗憾的是,没有看到一个解决这个特定问题的问题 这适用于返回价格查询的bot。Python 3.x 将浮点数的显示格式设置为固定长度,python-3.x,Python 3.x,我在显示股价,需要显示所有浮点数,精确宽度为8位,0代表1位。有些每股价格相当高,有些则非常低 例如,182.1234567890和0.12345678901将分别格式化为: 182.1234和0.123456 对齐小数并不重要。 重要的是,输出的宽度始终为8个空格长(包括十进制) 这里有许多格式问题,但遗憾的是,没有看到一个解决这个特定问题的问题 这适用于返回价格查询的bot。 我尝试过格式化字符串,但它们要求我为十进制精度设置特定的长度。小数精度不如数值的总宽度重要。当您需要一定数量的小数位
我尝试过格式化字符串,但它们要求我为十进制精度设置特定的长度。小数精度不如数值的总宽度重要。当您需要一定数量的小数位数时,格式字符串提供了一种解决方案,它们必须提供,因为否则您必须实现一些复杂的逻辑来计算小数位数的位置 但确保输出的宽度始终为8个空格很容易-只需截断第8个字符后的字符串:
str(my_float)[:8]
或者如果需要打印长度大于8的字符串(如果数字足够大)
str(my_float)[:8] if my_float < 10000000 else str(int(my_float))
str(my_float)[:8]如果my_float<10000000,其他str(int(my_float))
您可以尝试以下方法:
#!/usr/bin/python3
l=[182.1234567890, 0.12345678901]
for i in l:
print(str(i)[:8])
您也可以尝试以下方法:
def FormatIt(number, desired_length):
mantissa_length = desired_length - len(str(int(number))) - 1
return ('{:#.%df}' % (mantissa_length, )).format(number)
输出:
>>> FormatIt(182.1234567890, 8)
'182.1235'
>>> FormatIt(0.12345678901, 8)
'0.123457'
此函数应执行以下操作:
def rounds(num):
num = len(str(int(a)))
points = 7 - num if num < 7 else 0
return f'{a:.{points}f}'
rounds(12345)
#12345.00
rounds(182.1234567890)
#182.1234
def轮数(num):
num=len(str(int(a)))
点数=7-如果数值小于7,则为数值,否则为0
返回f'{a:.{points}f}'
轮数(12345)
#12345.00
轮数(182.1234567890)
#182.1234
也可以使用单一的格式
使用(而不是混合使用%
格式):'{:}.{man}f}.format(number,man=尾数长度)
@Tomerikoo,嘿,这太棒了,从现在起我肯定会在我的代码中使用它!