如何将浮点数转换为固定宽度的字符串?
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.014556
:0.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)
我试图找到这个问题的答案,但没有找到任何相关内容。
我有一个变量,可以采用 50000.45
格式或 0.01
.
我需要把这个变量写在一个 4 位宽的标签中。
适合仅显示最高有效数字的标签的最佳方式是什么?
为了更好地解释,我想举个例子:
50000.45
: 50000
4786.847
: 4786
354.5342
: 354.5
11.43566
: 11.43
对于 0.014556
:0.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)