【问题标题】:How to convert very small numbers from strings to floats properly in Python?如何在 Python 中正确地将非常小的数字从字符串转换为浮点数?
【发布时间】:2021-06-04 03:56:36
【问题描述】:

我有一个这样的号码:

n = "0.000016495822225857"

但是在使用以下方法将其转换为浮点数后:

num = float(n)

我明白了:

1.64958e+13

我的数字小于 1,如何正确转换它以便可以将这些小于 1 的值四舍五入?但是现在转换后,大于1。

这是因为浮点精度吗?

【问题讨论】:

  • 您如何检查该值为1.64958e+13print(num) 给我1.6495822225857e-05。你能展示可重复的例子吗?看起来您只使用了000016495822225857 部分。丢失小数分隔符?
  • 我正在将值打印到控制台,这就是我看到它的方式,但我使用的是嵌入在另一个名为 Maya 的应用程序中的 python。
  • 无论如何这不是精度问题,而是对字符串的错误解释

标签: python python-2.7 type-conversion precision maya


【解决方案1】:

不知道为什么会发生这种情况(对此感到抱歉)。

我所知道的是,您可以使用 decimal 模块作为解决方法。

from decimal import Decimal
n = "0.000016495822225857"
d = Decimal(n)

输出

0.000016495822225857

如果我不是盲人,输入和输出看起来是一样的。

【讨论】:

  • 这个有2.7版本吗?
猜你喜欢
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 2011-11-25
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 2018-12-28
相关资源
最近更新 更多