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

时间:2018-07-27 19:50:49

标签: python decimal

无论数字是多少,我都试图返回一个小数点后6位的数字。

例如:

>>> a = 3/6
>>> a
0.5

在保留其类型为浮点数的同时,如何取a并将其设为0.500000?

我尝试过

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

但是返回一个字符串。我想要可以完成相同任务但返回浮点数的东西。

2 个答案:

答案 0 :(得分:1)

在计算机内存中,浮点数以IEEE754 object的形式存储,这意味着它只是一堆以给定格式公开的二进制数据,与编写时的数字字符串完全不同。 / p>

因此,当您对其进行操作时,它仍然是浮点数,并且小数点后没有小数位数。仅当您显示它时,它才会执行,并且无论您做什么,当您显示它时,它都会转换为字符串。

那是当您进行到字符串的转换时,您可以指定要显示的小数位数,并使用编写时使用的字符串格式来完成。

答案 1 :(得分:1)

此问题表明对诸如float和string之类的数据类型的性质有一些误解。

计算机中的浮点数具有二进制表示形式,而不是十进制形式。 python在控制台中为您提供的十进制渲染已在打印时转换为字符串,即使该字符串已由print函数隐含。将0.5和0.5000000作为浮点数以其二进制表示形式存储之间没有区别。

在编写应用程序代码时,最好不要担心演示文稿,直到最终用户必须以某种方式将其转换为字符串(如果只是隐式地)后,再也不用担心。那时,您可能会担心小数位,甚至根本不希望显示小数。