[英]fstring float to int with leading zeros
我需要从一个长度始终为 5 的浮点数生成一个字符串。例如:
input_number: float = 2.22
output_str = "00222"
浮点数永远不会大于 999.xx,并且可以有任意数量的小数位。 我想出了以下代码,但我怀疑我的想法是否不能以更 pythonic 的方式完成。
我的解决方案:
input_number = 343.2423423
input_rounded = round(input_number, 2)
input_str = str(input_rounded)
input_str = input_str.replace(".","")
input_int = int(input_str)
output_str = f"{input_int:05d}"
更多示例:
343.2423423 -> “34324”
23.3434343 -> “02334”
这是否符合您的用例:
for input_number in (343.2423423, 23.3434343, 0.34, .1):
num, decimal = str(input_number).split('.')
print(f"{num.zfill(3)}{decimal[:2].ljust(2, '0')}")
出去:
34324
02334
00034
00010
这是我能想到的最简单的方法。 将其格式化为显示两位小数且总共六个字符的字符串(左补零),然后去掉小数点。
def format_number(number):
return f'{number:06.2f}'.replace('.', '')
格式规范迷你语言看起来很神秘,但在这种情况下它只是:
0
:要填充的字符6
:要产生的字符总数(包括小数点).2
:小数点后显示的位数f
: 定点浮点数这是一种方法:
for input_number in (343.2423423, 23.3434343, 0.34, .1, 23.45, 2.32):
num, decimal = str(input_number).split('.')
formatted_num = "{:03d}".format(int(num))
formatted_decimal = "{:.2f}".format(float("0."+decimal))[2:]
print(formatted_num+formatted_decimal)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.