精华内容
下载资源
问答
  • python 浮点型

    2020-01-01 21:37:11
    python中float类型没有规定大小,可以任意使用

    python中float类型没有规定大小,可以任意使用

    展开全文
  • 主要介绍了Python浮点型(float)运算结果不正确的解决方案,帮助大家更好的利用python进行运算处理,感兴趣的朋友可以了解下
  • 这篇文章主要介绍了Python浮点型(float)运算结果不正确的解决方案,帮助大家更好的利用python进行运算处理,感兴趣的朋友可以了解下 一、问题说明 以前对浮点数运行没有没有太在意。昨天同事要求把百分比结果保存...

    这篇文章主要介绍了Python浮点型(float)运算结果不正确的解决方案,帮助大家更好的利用python进行运算处理,感兴趣的朋友可以了解下

    一、问题说明

    以前对浮点数运行没有没有太在意。昨天同事要求把百分比结果保存到文件上,然后就以保存1位小数的形式给他保存了。

    但是今天同事运行时问能不能统一以一位小数的形式保存,当时觉得很奇怪昨天就是以一位小数形式存的怎么还会提这种要求呢。

    其给回的截图确实是部分是一位小数的,但一部分是很长的。查看代码都统一如下格式:

    # 使用round保留三位小数,然后乘以100,最后格式化为带百分号的字符串
    rate=f"{round(x/y,3) * 100}%"
    

    代码上没看出什么问题,直接运行确实是有些结果是一长串的。进行调试发现当x为37y为76时即会出现问题,如下图所示:
    在这里插入图片描述
    进行步骤拆分,发现round方法没有问题,问题在浮点数乘以100上(同时如下图可以看到也不是所有浮点数乘都有问题)
    在这里插入图片描述

    二、原因探究

    二进制对很多浮点数无法准确表示只能用一个近似值代替,而当使用这些以近似值代替的浮点数进行进算时本质上是这些进似值参与了运算,出来的结果也就是进似值运算后的结果。

    也就是说,一是这不是乘100的问题也不是乘法的问题而是整个浮点数运算都有问题,二是这不是python的问题是计算机浮点数存储的问题像C、Java等其他计算机语言进行运算都会有问题。

    如果有朋友没弄明白的话,可以进我的python学习交流.扣扣.裙:8衣久二五寺久寺二(数字的谐音转换下可以找到了)一起讨论,裙里还可以免费下载Python最新的学习资料和项目实战案例教程。
    在这里插入图片描述
    可能有人会疑惑:为什么二进制可以表示2不能表示0.2呢?

    这是因为数值和字符串是不一样的,如果是字符串那么表示2.2点的左右两边的2编码是一样的就可以了(如ASCII码:504650),但数值不是这样,数值的整数部分和小数部分需要一个统一的表示形式,那就是加权位计数法。

    整数部分都要以2的0次方(20)到2的无穷次方(2∞)表示,这没有问题,只要长度足够就能表示出所有奇数和偶数。2 = 1 * 21 + 0 * 20 = 10

    小数部分都要以2的-1次方(2-1)到2的负无穷次方(2-∞)表示,这就有问题,因为比如2-1…2-∞不管怎么组合都不能完全等于0.2。0.2 = 0 * 2-1 + 0 * 2-2 + 1 * 2-3 …

    三、处理办法

    这情况让我想起上份工作局方领导的一句话,应该是“可以理解但不能接受”。

    原理上二进制无法精确表示一些浮点数可以理解,但是就这么返回个显然错误的结果给用户那是无法接受的。

    python提供了Decimal()方法让浮点运算结果可以和人平时运算的结果一样。(Decimal本质应该还是通过加长长度提高精度)
    在这里插入图片描述

    # Decimal传字符串才能准确表示,所以需要先用str()把round()的结果转为字符串
    rate=f"{Decimal(str(round(x/y,3))) * 100}%"
    
    # 其实上边的结果出来是48.700%的形式,即三位小数的形式并不太符合我们保留一位小数的想法,真正符合想法得下面这样
    # rate=f"{round(Decimal(str(round(x/y,3))) * 100, 1)}%"
    
    # 其实我们说了这么多,我们都是建立在决定保留多少位再乘100这个前提下,倘若我们先乘100后决定保留几位那都不需要用Decimal
    # rate=f"{round(x/y*100,1)}%"
    

    在这里插入图片描述
    参考:

    https://www.programiz.com/python-programming/numbers

    https://docs.python.org/3.7/library/decimal.html

    以上就是Python浮点型(float)运算结果不正确的解决方案的详细内容,更多关于Python浮点型(float)运算结果不正确的资料可以进我的Python学习交流.扣扣.群:巴衣久二五寺久寺二(数字的谐音转换下可以找到了)下载,还有2020年秋季python最新学习资料、项目实战案例教程和BAT面试题可以免费下载

    本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    展开全文
  • python浮点型数据

    千次阅读 2018-02-02 10:01:04
    浮点型数据有2中表示方法:小数和指数。 小数方法 例如3.14, 0.314, 31.4 等等。python允许小数点后面不接任何数字,表示小数点部分是0. 例如,31. 就是31.0。 指数方法 就是用科学计数法表示,以e(或E)为底表示...

    浮点型数据有2中表示方法:小数和指数。

    小数方法

    例如3.14, 0.314, 31.4 等等。python允许小数点后面不接任何数字,表示小数点部分是0. 例如,31. 就是31.0。

    指数方法

    就是用科学计数法表示,以e(或E)为底表示以10为底的指数形式。e之前为数字部分,e之后为指数部分,且两部分必须同时出现,而且指数部分必须是整数。例如:314e-2,  314e-3,  314e-1  ,31.4e-2,0.314e2 是合法的,而314e,  e2,  314e-1.5 ,是非法的。





    展开全文
  • python浮点型数据精度

    千次阅读 2018-02-02 10:54:10
    python3 浮点型数据默认是17位的精度值。例如: 我们发现,在e之前的数字部分,除了小数点外,总共最多有17位,因为精度值是17位。我们还发现,1234567890123456789.0+1-1234567890123456789.0=0.0,因为...

    python3 浮点型数据默认是17位的精度值。例如:


    我们发现,在e之前的数字部分,除了小数点外,总共最多有17位,因为精度值是17位。我们还发现,1234567890123456789.0+1-1234567890123456789.0=0.0,因为1234567890123456789.0+1=1234567890123456790.0,而1234567890123456790.0保留17位的结果和1234567890123456789.0保留17位的结果相同。


    展开全文
  • 现如今,想学习Python的朋友有很多,那么大家了解Python浮点型吗?下面就给大家详细介绍下相关信息。 【例子】print(1, type(1))# 1 <class ‘int’>print(1., type(1.))# 1.0 <class ‘float’>a = 0...
  • python 浮点型(float)

    2019-07-17 12:50:00
    转载于:https://www.cnblogs.com/fanweisheng/p/11200290.html
  • python默认的是17位小数的精度 1、round()内置方法 π=3.1415926535 new_num=round(π,2) #四舍五入保留两位小数 print(new_num) #结果为:3.14 round()如果只有一个数作为参数,不指定位数的时候,返回的是一...
  • 在本文里小编给大家整理了关于Python浮点型的基本知识点内容,有兴趣的朋友们学习下。
  • python创建浮点型的列表

    千次阅读 2020-11-26 11:30:36
    当使用python中的range()函数时,只能用来创建整型(int)的列表,不能创建浮点型列表。 可以使用numpy库中的arrange()函数创建一个浮点型列表: import numpy as np L=np.arrange(0,10,0.1) 表示以0.1间隔...
  • python整型和浮点型

    2021-06-03 14:30:06
    python整型和浮点型 整型和浮点型可以直接运算,这俩者不可以直接与浮点数、列表等直接运算 整型 python中整型可以无限大也可以无限小,没有long int 型等,整型加整型还是整型 num1 = 10 num2 = 20 print(num1, ...
  • python浮点型类型

    2019-10-02 08:03:46
    浮点型:float 如3.14,2.88 class float(object): """ float(x) -> floating point number Convert a string or number to a floating point number, if possible. """ def a...
  • python使用pymssql库将浮点型数据写入SQL Server时,要用%s作为占位符,用%f会报错,TMD,谁会想到这个原因。
  • python中,默认情况下,如果表达式中全是整型,结果也会仅仅是整型。有时候没注意会出现意想不到的结果,比如: >>> a = 7 >>> b = 3 >>> c = a/b >>> print c 2 有时候一不...
  • python控制浮点型小数位

    千次阅读 2018-04-07 14:03:26
    一a =1.23456789 b="%4.f"%a #会变成字符串二round(a,3) #四舍五入
  • python3整型浮点型

    2019-08-04 20:46:00
    python3不会数字溢出?!是的! int:整型都统一成了int,能表示无限大。 python docs这么描述的: These represent numbers in an unlimited range, subject to available (virtual) memory only. float:...
  •   在Python中定义两个浮点型进行计算,会发现某些时候计算并不准确。如下图的代码,并没有得到预期的0.3,而是一个无限接近0.3的数值。 为什么会出现这种情况呢? 二、问题原因   查阅各方资料得知,由于所有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,019
精华内容 2,007
关键字:

python浮点型

python 订阅