首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将unicode转换为python浮点型,但保留小数位。

将unicode转换为python浮点型,但保留小数位。
EN

Stack Overflow用户
提问于 2016-05-25 04:23:56
回答 2查看 19.3K关注 0票数 4

我有一个unicode字符串x = u'12345678.87654321',我想使用以下命令将其转换为python中的float

代码语言:javascript
复制
float(x)

而是将其转换为12345678.88。似乎float()会自动将数字四舍五入到小数点后两位。我想保留unicode字符串中的所有内容(少于10位小数)。什么是一个好的替代方案?

编辑:我的道歉。我使用的示例没有经过测试。我将只使用我的真实数据:我有一个unicode字符串u'1464106296.285190‘。这是一个不能转换为浮点数并保留所有小数位的类型。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-25 04:28:09

使用decimal.Decimal

代码语言:javascript
复制
In [103]: import decimal

In [104]: D = decimal.Decimal

In [109]: D(u'1464106296.285190')
Out[109]: Decimal('1464106296.285190')

In [110]: float(u'1464106296.285190')
Out[110]: 1464106296.28519

In [111]: print(D(u'1464106296.285190'))
1464106296.285190
票数 9
EN

Stack Overflow用户

发布于 2016-05-25 08:23:09

它可以很好地转换。Python浮点数可以保持大约16位的精度。print在Python2.7中做了一些默认的四舍五入来显示它,但无论采用哪种方式,转换的值都是相同的。您可以格式化该值以更精确地打印。下面是Python3和Python2的例子。注意转换是精确到16位的。

代码语言:javascript
复制
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s=u'1464106296.285190'
>>> f=float(s)
>>> f
1464106296.28519
>>> format(f,'.30f')
'1464106296.285190105438232421875000000000'
>>> print(f)
1464106296.28519

Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> s=u'1464106296.285190'
>>> f=float(s)
>>> f
1464106296.28519
>>> format(f,'.30f')
'1464106296.285190105438232421875000000000'
>>> print(f)
1464106296.29
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37423185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档