计算浮点数中的小数位[重复]

Posted

技术标签:

【中文标题】计算浮点数中的小数位[重复]【英文标题】:Count decimal places in a float [duplicate] 【发布时间】:2014-10-07 08:30:54 【问题描述】:

在python中,我导入了一个数字中小数位长度不同的文件,例如7.2或7.2332 是否可以找出数字中的小数位数,如果可以,如何?我可以在 SO 上找到的所有问题都是关于格式化到特定小数位的问题,但这不是我正在做的。

该应用程序是使用 qdoublespinbox 并将小数位设置为仅需要的数量。

编辑:

在上下文中,我可以打印数字,它将打印 7.2 或 5.42422 等。如果命令提示符打印正确的数字(即不打印浮点内存分配中的所有内容)有什么办法可以获取该信息。

【问题讨论】:

你不能。这是不可能的(除非你愿意得到意想不到的答案)。 在使用计算机时,特别是浮点数,仅仅因为您将一个数字设置为一定的小数位数并不意味着它实际上有那么多。这是因为有些数字是无法复制的,例如 0.1 实际上是 0.100000000000000005551115123126 我猜快速投票意味着措辞有问题,所以我问是否可能。不知道我不希望得到什么答案,但我不明白为什么这个问题值得反对,答案是不可能的 @Ffisegydd 我添加了一个编辑来澄清 @user1938107 我投了反对票,因为没有尝试查找重复项,也没有提供重要(相关)信息。 【参考方案1】:

假设“导入文件”意味着您的小数是文件中的字符串,您可以使用 reverse 并查找:

>>> f = "7.2332"
>>> f[::-1].find('.')
4
>>> f = "7.20"
>>> f[::-1].find('.')
2

【讨论】:

一个简单的转换适用于实际请求的浮点参数:f = 7.2332; str(f)[::-1].find('.') 谢谢!它在未来和 Python 3.x 中对我有用 - 请注意,如果没有小数,它将返回 -1。出于某种原因,这篇被关闭并标记为重复的帖子不起作用。所以,再次感谢这篇文章! :D 这太棒了!有人可以解释 [::-1] 索引是如何工作的吗?在我看来它反转了字符串元素然后从新的“开始”搜索【参考方案2】:

转换为字符串,求小数点相对于字符串长度的位置。

【讨论】:

以上是关于计算浮点数中的小数位[重复]的主要内容,如果未能解决你的问题,请参考以下文章

计算机中的定点数与浮点数 浮点数用 正负位 幕数 数字部分来表示

浮点数的存储与表达

float_浮点数存储结构

将字符串转换为浮点数时缺少小数点[重复]

计算机组成原理——浮点数表示方法

js浮点数算术出现多为小数