如何格式化数字以始终包含1位小数?我有4个数字我想添加到一个元组,每个都有1个小数位。我试过用.format搞乱,但似乎无法让它与元组一起工作。
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)
感谢您的帮助!
答案 0 :(得分: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
tuple([float("{0:.1f}".format(n)) for n in my_tup])
答案 1 :(得分:0)
如果您只想在视觉上看到带有一个小数位的数字,但保留准确性,请使用字符串格式:
print "%.1f" % number
如果您想要对数字进行舍入: math.round(数字,1)
math.floor和math.ceil将允许严格向下或向上舍入
答案 2 :(得分:0)
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))