如何格式化数字以始终保留1位小数?我有4个数字我想添加到一个元组,每个都有一个小数位。我试图搞乱.format,但似乎无法让它与一个元组一起工作。将元组的格式列表设置为1位十进制
a = 1
b = 2
c = 3
d = 4.44
my_tup = (a,b,c,d)
而且我希望my_tup的格式如此。 (1.0,2.0,3.0,4.4)
感谢您的帮助!
如何格式化数字以始终保留1位小数?我有4个数字我想添加到一个元组,每个都有一个小数位。我试图搞乱.format,但似乎无法让它与一个元组一起工作。将元组的格式列表设置为1位十进制
a = 1
b = 2
c = 3
d = 4.44
my_tup = (a,b,c,d)
而且我希望my_tup的格式如此。 (1.0,2.0,3.0,4.4)
感谢您的帮助!
a, b, c, d = 1, 2, 3, 4.44
my_tup = (a, b, c, d)
my_tup = tuple([float("{0:.1f}".format(n)) for n in my_tup])
然而,tuple
是不可变的序列,所以你不能改变它,你已经创建后。在把它们放入一个元组之前,让你的数字格式正确可能会更好;这也将避免整个(丑)创建list
然后在tuple([float("{0:.1f}".format(n)) for n in my_tup])
谢谢,作品像一个魅力! – user3533755
另一个解决方案是在你的情况下从列表中创建一个元组,如map(“{:。1f}”.format,my_tup)',就像我的解决方案一样。我更喜欢'decimal.Decimal',因为这些数字应该明确地避免浮点数学!很好的答案,+1 –
从中创建一个tuple
如果你只希望看到一个小数位视觉上的数字,但保持精度,使用字符串格式化:
print "%.1f" % number
如果你想圆数: math.round(数量1)
math.floor和math.ceil将使严格舍向上或向下
decimal
是正确的解决方案,因为这些是十进制数字而非浮点数。
import decimal
a, b, c, d = 1, 2, 3, 4.44
my_tup = tuple(map(decimal.Decimal, map("{:.1f}".format, [a,b,c,d])))
这基本上是:
a, b, c, d = 1, 2, 3, 4.44
# strip the nonsignificant digits
a = "{:.1f}".format(a) # 1.0
b = "{:.1f}".format(b) # 2.0
c = "{:.1f}".format(c) # 3.0
d = "{:.1f}".format(d) # 4.4
my_tup = (decimal.Decimal(a), decimal.Decimal(b),
decimal.Decimal(c), decimal.Decimal(d))
你是不是格式化的元组。你在一个元组内部格式化一系列数字。而且,元组是不可变的,所以你想在把它们放入元组之前这样做。另外,从您的问题中不清楚您是要格式化数字还是修剪数字。 (如在后一种情况下,1 == 1.0) – njzk2