在Python3.x中保留或添加小数位数

在Python3.x中保留或添加小数位数,python,decimal,Python,Decimal,我试图返回一个小数点后6位的数字,不管这个数字是什么 例如: >>> a = 3/6 >>> a 0.5 如何在将其类型保留为浮点数的同时,获取一个并使其为0.500000 我试过了 '{0:.6f}'.format(a) 但这会返回一个字符串。我想让它完成同样的任务,但返回一个浮点。在计算机内存中,浮点被存储为,这意味着它只是一组以给定格式公开的二进制数据,与您编写时的数字字符串完全不同 所以当你操作它时,它仍然是一个浮点数,在点后面没有小数。只有当你显

我试图返回一个小数点后6位的数字,不管这个数字是什么

例如:

>>> a = 3/6
>>> a
0.5
如何在将其类型保留为浮点数的同时,获取一个并使其为0.500000

我试过了

'{0:.6f}'.format(a)

但这会返回一个字符串。我想让它完成同样的任务,但返回一个浮点。

在计算机内存中,浮点被存储为,这意味着它只是一组以给定格式公开的二进制数据,与您编写时的数字字符串完全不同

所以当你操作它时,它仍然是一个浮点数,在点后面没有小数。只有当你显示它时,它才会显示,无论你做什么,当你显示它时,它都会被转换成字符串


此时,您可以指定要显示的小数位数,并使用您编写的字符串格式进行转换。

这个问题显示了对数据类型(如float和string)性质的一点误解

计算机中的浮点是二进制表示,而不是十进制表示。python在控制台中提供给您的十进制呈现在打印时被转换为字符串,即使它是由print函数隐式表示的。在二进制表示中,0.5和0.5000000作为浮点存储的方式没有区别


当您编写应用程序代码时,最好不要担心演示文稿,直到它到达最终用户,在那里它必须以某种方式转换为字符串(如果只是隐式的)。在这一点上,你可以担心小数点,甚至你是否希望它以十进制显示。

float({0.6f})。format(a))
这个问题没有真正意义。您看到的
.5
实际上并不是浮点值在计算机上的表示方式。它也是一根线。没有其他方法可以将
1/2
存储为浮点数。没有其他浮点数具有该值。您只能更改它作为字符串的表示方式。@n1c9仍然返回0。5@PatrickHaugh事实证明,您是对的,这是我遇到编码挑战问题之前的印象。由于我对这个问题的误解,我相信可以将0.5和0.500表示为两个不同的浮动。不过,我将把这个问题留给大家,因为它将来可能会帮助其他人。