Python 格式化的十进制数对“0”有不同的行为;g";使用";%时的选项&引用;运营商vs";格式";

Python 格式化的十进制数对“0”有不同的行为;g";使用";%时的选项&引用;运营商vs";格式";,python,string-formatting,Python,String Formatting,这只是decimal软件包中的一个错误,还是说格式可能与旧的“%”运算符具有不同的行为?来自: 默认情况下,新样式的简单格式化程序调用对象的_format__()方法来表示它。如果您只想呈现str(…)或repr(…)的输出,可以使用!s或!r转换标志 所以“{:g}”.format(Decimal('1.100')首先处理十进制内容的\uuuuuu format\uuuuu(),而另一个可能在格式化之前首先转换为浮点 格式(浮点(十进制('1.100'))给出1.1来自: 默认情况下,新样式的

这只是decimal软件包中的一个错误,还是说格式可能与旧的“%”运算符具有不同的行为?

来自:

默认情况下,新样式的简单格式化程序调用对象的_format__()方法来表示它。如果您只想呈现str(…)或repr(…)的输出,可以使用!s或!r转换标志

所以
“{:g}”.format(Decimal('1.100')
首先处理十进制内容的
\uuuuuu format\uuuuu()
,而另一个可能在格式化之前首先转换为浮点

格式(浮点(十进制('1.100'))给出
1.1

来自:

默认情况下,新样式的简单格式化程序调用对象的_format__()方法来表示它。如果您只想呈现str(…)或repr(…)的输出,可以使用!s或!r转换标志

所以
“{:g}”.format(Decimal('1.100')
首先处理十进制内容的
\uuuuuu format\uuuuu()
,而另一个可能在格式化之前首先转换为浮点

格式(浮点(十进制('1.100'))给出
1.1

>>> "{:g}".format(Decimal('1.100'))
'1.100'
>>> "%g" % Decimal('1.100')
'1.1'