如何将浮点数转换为固定宽度的字符串?

How to convert a floating-point number to a fixed-width string?

我试图找到这个问题的答案,但没有找到任何相关内容。

我有一个变量,可以采用 50000.45 格式或 0.01.

格式

我需要把这个变量写在一个 4 位宽的标签中。

适合仅显示最高有效数字的标签的最佳方式是什么?

为了更好地解释,我想举个例子: 50000.45: 50000
4786.847: 4786
354.5342: 354.5
11.43566: 11.43
对于 0.0145560.0145

可能不需要做:

if ... < variable < ...:
    round(variable,xx) 

对于所有情况。

为了将数字转换为一组数字,您可以将数字转换为仅小数(又名 0 <= n <= 1),然后删除最后一个字符。你可以这样做:

from math import log10

number = 123.456789
n_digits = 4

log = int(log10(number) + 1)
number /= 10**log # convert the number into only decimals

number = int(number*10**n_digits)/10**n_digits # keep the n first digits

number *= 10**log # multiply the number back

或更紧凑的形式:

from math import log10

number = 123.456789
n_digits= 4

log = int(log10(number) + 1) - n_digits
number = int(number/10**log)*10**log

[编辑] 您应该以更简单的方式使用 Python round() function

number = round(number, n_digits-int(log10(number))-1)