首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法得到python 3中python 2的精确str(浮)结果

无法得到python 3中python 2的精确str(浮)结果
EN

Stack Overflow用户
提问于 2020-05-12 17:19:04
回答 2查看 198关注 0票数 1

我正在尝试将一些py2代码移植到py3,并且我想以某种方式再现py2将返回的浮点数的确切字符串表示形式,但在python 3中。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from __future__ import print_function

a = 1.5 * 0.4
string = str(a)
print(string)

在python3中,输出是0.6000000000000001,vs python2,其中输出是0.6,我理解为什么:

为什么str(float)在Python 3中返回的数字比Python 2多?

但是,是否有一种方法可以忠实地再现(在python3中)对于任意值的str(a) (例如,py2和py3中的相同行为)?

我试过这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import six
a = 1.5 * 0.4
string = str(a)
if six.PY3:
    string = '{:.12g}'.format(a)
print(string)

上面的“几乎”可以工作,但是在a = 5的例子中,我们将得到不同的输出( py2的5.0和py3的5 )

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-12 20:54:05

这个问题来自于这样一个事实:一些分数可以很容易地用十进制表示(例如,1/3 = 0.33333333…)。,有些分数不易以二进制形式表示(例如,1/3 = 0.01010101…)。但是,如果您想获得与十进制数一样一致的结果,请考虑查看小数模块(它在Python2.7和3中可用)。你可以有这样的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from decimal import Decimal

a = Decimal('1.5') * Decimal('0.4')
result = str(a)
print(result)
票数 1
EN

Stack Overflow用户

发布于 2020-05-12 17:36:24

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> a = 1.5 * 0.4
>>> print(f'{a:.1f}')
0.6
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61764760

复制
相关文章
【Python】python2 str 编码检测
zhaokang555
2023/10/17
1390
python str模块
str字符串 str 转义字符 格式化 内建函数 字符串 表示文字信息 用单引号,双引号,三引号括起来 s = 'I love ' print(s) I love s = "I love " print(s) I love s = """ I Love """ print(s) I Love 转义字符 用一个特色的方法表示出一系列不方便写出的内容,比如回车键,换行符,退格键 借助反斜杠字符,一旦字符串中出现反斜杠,则反斜杠后面一个或几个字符表示已经不是原来的意思了,进行了转义 在字符串中,一旦出现反斜
ruochen
2021/03/04
2.2K0
python str模块
Python -- str 类
def capitalize(self):   # 全部字母变小写只有首字母变大写;
py3study
2020/01/06
8190
Python str方法
print("{}喜欢{}".format('tom','打球'))                 #不指定位置
用户7886150
2021/01/12
5670
Python - repr()、str() 的区别
总的来说 str():将传入的值转换为适合人阅读的字符串形式 repr():将传入的值转换为 Python 解释器可读取的字符串形式 传入整型 # number resp = str(1) print(resp, type(resp), len(resp)) resp = str(1.1) print(resp, type(resp), len(resp)) resp = repr(1) print(resp, type(resp), len(resp)) resp = repr(1.1) print(r
小菠萝测试笔记
2021/09/14
4290
Python - 了解bytes、str
    Python3有两种表示字符序列的类型:bytes和str。前者的实例包含原始的8位值,后者的实例包含Unicode字符。     Python2也有两种表示字符序列的类型,分别叫做str和Unicode。与Python3不同的是,str实例包含原始的8位值;而unicode的实例,则包含Unicode字符。     把Unicode字符表示为二进制数据(也就是原始8位值)有许多种办法。最常见的编码方式就是UTF-8。但是,Python3的str实例和Python2的unicode实例都没有和特定的二进制编码形式相关联。要想把Unicode字符转换成二进制数据,就必须使用encode方法。要想把二进制数据转换成Unicode字符,则必须使用decode方法。     编写Python程序的时候,一定要把编码和解码操作放在界面最外围来做。程序的核心部分应该使用Unicode字符类型(也就是Python3中的str、Python2中的unicode),而且不要对字符编码做任何假设。这种办法既可以令程序接受多种类型的文本编码(如Latin-1、Shift JIS和Big5),又可以保证输出的文本信息只采用一种编码形式(最好是UTF-8)。     由于字符类型有别,所以Python代码中经常会出现两种常见的使用情境: 开发者需要原始8位值,这些8位值表示以UTF-8格式(或其他编码形式)来编码的字符。 开发者需要操作没有特定编码形式的Unicode字符。     所以,我们需要编写两个辅助(helper)函数,以便在这两种情况之间转换,使得转换后的输入数据能够符合开发者的预期。
py3study
2020/01/09
1.1K0
Python源码:str对象
class str(object):     """     str(object='') -> str     str(bytes_or_buffer[, encoding[, errors]]) -> str          Create a new string object from the given object. If encoding or     errors is specified, then the object must expose a data buffer     that
py3study
2020/01/10
1.3K0
python Str类方法
#capitalize():字符串首字符大写 string = 'this is a string.' new_str = string.capitalize() print(new_str) #输出:This is a string.   #center(width, fillchar=None):将字符串放在中间,在指定长度下,首尾以指定字符填充 string = 'this is a string.' new_str = string.center(30,'*') print(new_str) #输出
py3study
2020/01/10
6090
[583]python str.ljust()、str.rjust()、str.center()函数
例三:如果给定宽度 = 字符串宽度 + 1,字符串字符数为奇数时,填充的字符串在右侧,字符串字符数为偶数时,填充的字符串在左侧
周小董
2022/04/13
6200
python __str__()函数的作用
不知道大家再写程序是,打印一个实例化对象时,打印的其实时一个对象的地址。而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西。
风之随想
2019/12/09
1.9K0
Python repr str 函数
Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数。
用户7886150
2020/12/20
3940
QIIME2得到PICRUSt2结果后如何分析
作者:聋言瞎面 审核:Listenlii 本文主要解决的问题: 1、QIIME2做完PICRUSt2后,只输出pathway id,如何比对得到pathway description? 2、PICRU
Listenlii-生物信息知识分享
2022/07/30
1.2K2
QIIME2得到PICRUSt2结果后如何分析
【Python】Python3中的str和bytes
len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数
zhaokang555
2023/10/17
1710
python开发_python中str.format()
格式化一个字符串的输出结果,我们在很多地方都可以看到,如:c/c++中都有见过 下面看看python中的字符串格式函数str.format(): 1 #使用str.format()函数 2 3 #使用'{}'占位符 4 print('I\'m {},{}'.format('Hongten','Welcome to my space!')) 5 6 print('#' * 40) 7 8 #也可以使用'{0}','{1}'形式的占位符 9 print('{0},I\'m {1},my
Hongten
2018/09/13
6460
30.python str函数
在python中str即可以表示 字符串str 类型,也可以作为一个内置函数,可以直接将其他数据类型强制转为字符串类型,语法如下:
猿说编程[Python和C]
2020/03/12
1.1K0
python str转bool方法
def str_to_bool(str): return True if str.lower() == 'true' else False
py3study
2020/01/06
4.6K0
python bool和str转换
从数据库取出的 bool 数据 db = True 从前台url传来的 str 数据 url = “true”
用户7886150
2021/01/22
1.8K0
Python对象的2个内置方法__del__和__str__
在python中,当使用类名()创建对象时,为对象分配完空间后,自动调用__init__方法,当一个对象被从内存中销毁前,会自动调用__del__方法。(__del__英文状态下的del左右一边各两个下划线)
python自学网
2022/09/01
6300
Python对象的2个内置方法__del__和__str__
python中,list转str
      在python中,经常会有需要把list转成一个字符串的情况。比如['you','are','freak']。怎么把它变成“you are freak”呢?
钱塘小甲子
2019/01/29
1.3K0
python学习系列--str类型
istitle()                    是否是标题。标题就是每个词的首字母都是大写。
py3study
2020/01/14
5680

相似问题

TypeError:无法连接'str‘和’浮‘对象- MCEdit

32

补偿双/浮不精确

22

Python 3中的除法得到的结果与Python 2中的结果不同

33

浮数python 3+

40

Python:比较2个列表并得到结果

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文