Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 如何在cheetah模板中将浮点值截断为小数点后两位?_Python_Templates_Cheetah - Fatal编程技术网

Python 如何在cheetah模板中将浮点值截断为小数点后两位?

Python 如何在cheetah模板中将浮点值截断为小数点后两位?,python,templates,cheetah,Python,Templates,Cheetah,我目前在python代码中使用Cheetah模板,并传入了一些浮点数。我想在模板中将这些浮点值截断为小数点后两位,例如,0.2153406将变成0.21 是否可以在Cheetah模板中执行此操作?我是否必须传入已截断的字符串?要运行示例,请使用print(“FORMAT.”FORMAT(NUMBER)); 因此,要获得第一个示例的输出,您需要运行:print(“{.2f}”).format(3.1415926) 将输出 3.14 2 decimal places 我刚刚通过使用#ech

我目前在python代码中使用Cheetah模板,并传入了一些浮点数。我想在模板中将这些浮点值截断为小数点后两位,例如,0.2153406将变成0.21

是否可以在Cheetah模板中执行此操作?我是否必须传入已截断的字符串?

要运行示例,请使用print(“FORMAT.”FORMAT(NUMBER)); 因此,要获得第一个示例的输出,您需要运行:print(“{.2f}”).format(3.1415926)

将输出

3.14    2 decimal places 

我刚刚通过使用#echo:

  • #echo“%.2f”%$my\u float\u var#
这将在变量$my_float_var中打印出我的float,只保留两位小数。

\echo
可以工作,但您可以定义自己的筛选器类来控制格式细节,从而编写更简单的模板。这是一个过滤器,它可以将浮动旋转到一定的精度

import Cheetah.Filters

class MyFilter(Cheetah.Filters.Filter):
    """
    Overrides filtering to control the number of digits output for
    floats.
    """
    def filter(self,val,numDigits=2,**kw):
        """
        Called each time a top level placeholder is to be
        formatted for output.
        """
        if isinstance(val,float):
            return f"{val:.{numDigits}f}"

        return super().filter(val,**kw)
若要使用此自定义筛选器,请在创建模板时指定它。这里有一条路

cls=Cheetah.Template.Template.compile(tmpl)
print(cls(filter=MyFilter))
您还可以向筛选函数添加自定义参数,如上例中的
numDigits
。要指定该值,必须在占位符中使用长格式

#import math

π to two digits is $math.pi
π to ten digits is ${math.pi,numDigits=10}
这是一个老生常谈的问题,但之前的答案没有提到过滤器,尽管格式化占位符是它们的主要用途

吉姆