【发布时间】:2016-05-24 20:23:55
【问题描述】:
我有一个 unicode 字符串 x = u'12345678.87654321',我想在 python 中将其转换为 float
float(x)
它被转换为12345678.88。似乎float() 自动将数字四舍五入到小数点后两位。我想保留 unicode 字符串中的任何内容(小于 10 位小数)。有什么好的选择?
编辑:我很抱歉。我使用的示例未经过测试。我将只使用我的真实数据: 我有一个 unicode 字符串 u'1464106296.285190'。这是无法转换为浮点数并保留所有小数位的。
【问题讨论】:
-
您使用的是 Python 3 吗?我在 2.7 中没有得到这个结果。
-
这里有两个问题:1)
float没有无限精度,16位端对端大约是最大值; 2) Python 不一定会输出所有数字,除非你使用格式化来强制它。 -
请查看我的编辑。我同意@MarkRansom 的观点,即浮点数端到端有 16 位数字。如果我想超越这个限制怎么办?
-
这是干什么用的?您真的需要比
float提供的精度更高吗? -
@RadLexus 如果您在 Python 2 中使用
print,它很容易重现。而且我在问题中没有看到任何关于库推荐的请求。