Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解python中的此类。运算符%并格式化浮点_Python_Class_Operators - Fatal编程技术网

了解python中的此类。运算符%并格式化浮点

了解python中的此类。运算符%并格式化浮点,python,class,operators,Python,Class,Operators,让我困惑的是这一部分 class FormatFloat(FormatFormatStr): def __init__(self, precision=4, scale=1.): FormatFormatStr.__init__(self, '%%1.%df'%precision) self.precision = precision self.scale = scale def toval(self, x): i

让我困惑的是这一部分

class FormatFloat(FormatFormatStr):
    def __init__(self, precision=4, scale=1.):
        FormatFormatStr.__init__(self, '%%1.%df'%precision)
        self.precision = precision
        self.scale = scale

    def toval(self, x):
        if x is not None:
            x = x * self.scale
        return x

    def fromstr(self, s):
        return float(s)/self.scale
这是否意味着在1之前输入两次精度,在df之前输入一次精度?df代表你所知道的任何东西吗?我在其他地方看不到它,甚至在它的祖先身上也看不到,从这里可以看出:

FormatFormatStr.__init__(self, '%%1.%df'%precision)
另外,我把这个放进我的Ipython中,得到这个:

class FormatFormatStr(FormatObj):
    def __init__(self, fmt):
        self.fmt = fmt

    def tostr(self, x):
        if x is None: return 'None'
        return self.fmt%self.toval(x)

class FormatObj:
    def tostr(self, x):
        return self.toval(x)

    def toval(self, x):
        return str(x)

    def fromstr(self, s):
        return s
[53]中的
x=FormatFloat(.234324325435)
In[54]:x
出[54]:
我认为它会将精度降低到4,并将比例降低到1。但它却被储存在我的记忆中。我能取回它看看它对号码有什么影响吗

谢谢大家,你帮了大忙

('%%1.%df'%precision)
中,第一个
%%
生成一个文本
%
%d
替换为
precision
,并按字面插入
f
。下面是一个可能的结果示例:

In [53]: x = FormatFloat(.234324234325435)
In [54]: x
Out[54]: <matplotlib.mlab.FormatFloat instance at 0x939d4ec>

为了使用
FormatFloat
类,您可以尝试以下方法:

>>> '%%1.%df' % 4
'%1.4f'
在python格式的字符串中,“%%”表示“插入文字百分比符号”--用行话来说,第一个%'转义'第二个。所讨论的字符串,
“%%1.%df”%precision
正在使用格式字符串生成格式字符串,唯一被替换的是“%d”。在交互式提示下尝试:

formatter = FormatFloat(precision = 4)
print formatter.tostr(0.2345678)
FormatFloat
没有定义
\uuuuurepr\uuuuuuuu
\uuuuuu str\uuuuuuuuu
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuunicode>(用于类型强制的“魔法”方法),因此,当您在交互式控制台中打印值时,您就可以得到实例的标准。要获取字符串值,可以调用
tostr()
方法(在父类上定义):

%%转换为%

1按原样打印

%d以十进制数字形式打印精度

f是逐字印刷的

>>> print "%%1.%df" % 5
'%1.5f'
>>> ff = FormatFloat(.234324234325435)
>>> ff.tostr()
0.234
>>> precision=4
>>> '%%1.%df'%precision
'%1.4f'