繁体   English   中英

fstring float 到带前导零的 int

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM