【问题标题】:How to convert a floating-point number to a fixed-width string?如何将浮点数转换为固定宽度的字符串?
【发布时间】:2021-07-03 19:51:31
【问题描述】:

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

我有一个变量,它的格式可以是50000.45,也可以是0.01

我需要将此变量写入 4 位宽的标签中。

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

为了更好地解释,我想举个例子: 对于50000.4550000
对于4786.8474786
对于354.5342354.5
对于11.4356611.43
对于0.0145560.0145

可能不需要做:

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

适用于所有情况。

【问题讨论】:

  • 这似乎与 tkinter 无关。您只是在问如何将浮点数转换为固定宽度的字符串。
  • 您可以使用以 10 为底的对数来找出您需要多少个小数。如果大于2,跳过小数,如果是负数,添加这个小数。您可以使用 .format() 方法将浮点数格式化为小数。 (例如"{0:.3f}".format(12345.12345) 导致12345.123

标签: python tkinter label rounding


【解决方案1】:

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

from math import log10

number = 123.456789
n_decimals = 4

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

number = int(number*10**n_decimals)/10**n_decimals # keep the n first decimals

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

或者更紧凑的形式:

from math import log10

number = 123.456789
n_decimals = 4

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

【讨论】:

    猜你喜欢
    • 2010-12-02
    • 2011-11-25
    • 1970-01-01
    • 2018-02-15
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多