字符串格式浮动,始终为 8 个字符,但没有左填充

船尾

我想

1.2            -> 1.200000
12.3           -> 12.30000
1234.5         -> 1234.500
12.34444444444 -> 12.34444

我试过了

value = 1234.5
s = f"{value:.8f}"

和类似的格式,但它并不总是保留 8 个字符(7 位数字 + 小数点)。

如何用formator做到这一点f"..." strings

我知道还有其他解决方案,例如,f"{value:.20f}"[:8]但我很好奇是否可以仅使用格式化。

莫兹韦

您可以计算长度并以编程方式设置要保留的小数位数:

value = 1234.5

import math
N = 8
n = 1+math.floor(math.log10(value))
s = f"{value:.{N-n-1}f}"

输出:'1234.500'

泛型函数

def fmt(value, N=8):
    import math
    if value > 0:
        v = value
    elif value < 0:
        v = -10*value
    else:
        v = 1
    n = 1+math.floor(math.log10(v))
    if n>=N-1:
        return str(round(value))
        # or overflow
        # return '!'*N
    return f"{value:.{N-n-1}f}"

l = [-12.3, -1, 0, 1, 10, 1.2, 12.3, 100, 1234.5, 12.34444444444, 123456789.9]

print('\n'.join([fmt(v) for v in l]))

输出:

-12.3000
-1.00000
0.000000
1.000000
10.00000
1.200000
12.30000
100.0000
1234.500
12.34444
123456790

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java 8 Time API:如何将格式为“ MM.yyyy”的字符串解析为LocalDate

安全足够的8个字符的短唯一随机字符串

安全足够的8个字符的短唯一随机字符串

Java 8个字符的唯一字符串

填充数字直到字符串在Java中长为8个字符?

Java 8 Time API:如何将“ mm:ss”格式的字符串解析为Duration?

生成潜在的8个字符串的所有可能的2个字符组合?

格式为UTF-8的WTF-8字符串的集合,作为16位切片

如何从熊猫字符串中提取前8个字符

带有多个字符的Python 2.7格式字符串填充

接受字符串并返回8个字符的字符串列表的函数

字符串或整个字符串的前n个字符;没有SubscriptOutOfBounds

将20个字符的字符串编码为8个字符,然后解码回去

使字符串的长度始终为n

用前缀字符填充始终具有12个字符串

Java格式全部浮动为字符串

0或8个字符的正则表达式字符串

如何将UTF-8格式的字符串(不是bytes [])解码为Java中的另一个字符串?

当字符串有 26 个字符时,为什么 sizeof(str) 8?

超过 8 个字符的字符串导致无限循环 C++

字符串长度始终为 0

有多少个 8 个字符的密码

python字符串拆分“大约8万个字符的字符串”

如何在 UITextField 中只允许没有任何空格和正好 8 个字符的数字和字母

Python 将 3 个字符串误解为 UTF-8 连续字节

什么需要更多内存,8 个字符的字符串还是 8 位的整数?

从全名字段生成用户名并添加 8 个字符字符串

Laravel 8:迁移如何添加超过 1k 个字符的字符串?

BufferedReader 没有读取整个字符串