`
sodler
  • 浏览: 14593 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

python的浮点数算法

 
阅读更多

       本菜基本完结了pos机的第二个页面,但是还是遇到了不少问题,本次总结其中之一,浮点数的计算。

       统计商品数量时,本来是直接加一就可以,但是本菜觉得应该照顾一下论斤买的商品,于是直接把 += 1 改为了 +=0.5,于是网页干干脆脆的报错不显示了,本菜通过强化过的报错函数,发现错误在于数据类型不正确,报的错误是:TypeError at /item/ unsupported operand type(s) for +=: 'decimal.Decimal' and 'float',decimal意为十进制,也就是说十进制和浮点型数因为类型不同不能运算,js中可以直接计算的内容到了python 竟然连加法都不能通常计算,于是本菜找到的方法是将浮点型转换为十进制小数,即:number = Decimal('data')由于在  django  框架,于是视图中添加  from decimal import Decimal.

       本菜还特意查询过了python语言内的数据计算发现如下内容:

       首先在终端中,进入python语言环境,然后:

 

>>> 1/3
0.3333333333333333(16个3,共17位)
>>> 0.333333333333333*3
0.9999999999999989

       最后两位变成了 ’ 89 ‘,这应该是计算的错误,但是计算机连算数都算错还能干啥,真正的原因在于python只打印机器中存储的二进制值的十进制近似值,部分机器上即使打印的是正确的结果但是实际保存的最近似的二进制小数。

 

>>> 0.1+0.1+0.1==0.3
False

  这是本菜最感兴趣的地方,经过搜索后发现历史上,Python 提示符和内置的 repr() 函数选择一个 17 位精度的数字,0.10000000000000001。从 Python 3.1 开始,Python(在大多数系统上)能够从这些数字当中选择最短的一个并简单地显示 0.1。二进制浮点数计算有很多这样意想不到的结果。

 

>>> a = 1.345
>>> a.as_integer_ratio()
(6057341498813317, 4503599627370496)

 当你真的想要知道浮点数精确值的时候,Python 提供这样的工具可以帮助你.float.as_integer_ratio() 方法以分数的形式表示一个浮点数的值.

 

>>> a == 6057341498813317/4503599627370496
True

 float.hex() 方法以十六进制表示浮点数,给出的同样是计算机存储的精确值:

 

>>> a.hex
<built-in method hex of float object at 0x7fdee0806fc0>

 

当计算量过大时许多语言会把结果舍入到 17 位有效数字,而不是显示全部的十进制值:

 

>>> 0.1 * 3**199
8.853799629195827e+93

 

 

分享到:
评论

相关推荐

    Python-遗传算法路径规划及仿真

    1. **编码方式**:遗传算法通常采用二进制编码或浮点数编码,本项目可能采用了适合表示路径的编码方式,比如坐标点的序列。 2. **初始种群**:随机生成一组解,代表种群的初始状态,每个解代表一种可能的路径。 3....

    python遗传算法 源代码

    Python遗传算法是一种基于生物进化原理的优化方法,它模拟了自然选择、遗传和突变等过程来寻找问题的近似最优解。在这个源代码中,我们可以深入理解遗传算法的实现细节,并通过编程实践掌握其应用。 遗传算法的核心...

    高精度浮点数幂指运算

    这些类型的浮点数虽然在大多数应用中已经足够精确,但在金融、科学计算或者数学算法等领域,更高精度的需求是必不可少的。当我们需要进行大整数或极高精度小数的运算,例如进行幂指数运算时,就需要用到特殊的高精度...

    关于Python中浮点数精度处理的技巧总结

    最近在使用Python的时候遇到浮点数运算,发现经常会碰到如下情况: 出现上面的情况,主要还是因浮点数在计算机中实际是以二进制保存的,有些数不精确。 比如说: 0.1是十进制,转化为二进制后它是个无限循环的数: ...

    python 浮点数四舍五入需要注意的地方

    这是因为NumPy的实现使用了快速但可能不完全精确的算法,这可能导致在进行浮点数乘以10的幂次后,再进行除法时引入误差。 在数据分析中,这种行为可能导致预期之外的结果,尤其是在处理大量数据时。例如,在上述...

    遗传算法实例(python实现)

    在这个实例中,我们使用Python语言来实现遗传算法,目标是找到函数`f(x) = 10 * sin(5x) + 7 * cos(4x)`在区间`0 内的最大值。这个函数是一个非线性的多峰函数,传统的求解方法可能难以找到全局最优解,而遗传算法的...

    python程序设计与算法基础教程-概述.pdf

    例如,输入`help(float)`可以获得有关浮点数的详细文档。此外,`dir(builtins)`可以显示所有内置对象的列表。Python的官方网站(www.python.org)提供完整的语言文档和不同版本的下载,而Python扩展库的官方索引PyPI...

    Python如何执行精确的浮点数运算

    在Python编程中,进行浮点数运算时,可能会遇到精度问题。这是因为计算机内部采用IEEE 754标准来表示和处理浮点数,这导致某些十进制数值无法精确地用二进制表示,进而引发计算误差。例如,当你尝试执行如`4.2 + 2.1...

    Python程序设计与算法基础教程·第二章上机实践.pdf

    在《Python程序设计与算法基础教程》的第二章上机实践中,主要涵盖了Python语言的基础编程概念、函数的应用以及算法的初步实现。以下是本章节中涉及的一些关键知识点: 1. **输入输出**: - 使用`input()`函数获取...

    遗传算法优化变分模态分解参数(VMD)python

    在Python中实现遗传算法优化VMD参数,通常包括以下几个步骤: 1. **编码**:将VMD的参数(如K、α)编码为个体的基因串,例如用整数或浮点数表示。 2. **初始化种群**:随机生成一定数量的个体(每个个体代表一组...

    python数据结构和算法

    在Python语言中,数据结构包括基本数据类型如整数、浮点数和字符串,以及更复杂的数据结构如列表(list)、元组(tuple)、字典(dict)和集合(set)。这些数据结构为数据的组织提供了丰富的方式,例如列表和元组...

    python十进制和二进制的转换方法(含浮点数)

    本文主要探讨了在Python语言中如何实现十进制与二进制之间的相互转换,特别是涉及到了包含浮点数的转换方法。在讲解之前,先需要明确一些基本概念。 首先,在十进制与二进制的转换过程中,十进制是一个基数为10的...

    算法-计算浮点数相除的余(信息学奥赛一本通-T1029)(包含源程序).rar

    5. **编程实现**:在实现算法时,可以选择使用不同的编程语言,如C++、Python或Java等。每种语言对浮点数的处理方式和精度可能会有所不同,需要根据具体语言特性来编写代码。 6. **源程序分析**:提供的PDF文件很...

    python趣味编程100例.7z

    1. **变量与数据类型**:Python中的变量可以存储不同类型的数据,如整数(int)、浮点数(float)、字符串(str)和布尔值(bool)等。了解这些基本数据类型及其用法是编程的起点。 2. **运算符**:Python支持算术运算符(如...

    浮点数与十进制数转换工具

    在编程语言中,如Python、Java、C++等,都有内置的函数或者库来支持浮点数和十进制数之间的转换,例如Python的`float()`和`int()`函数,Java的`Float.parseFloat()`和`Integer.parseInt()`方法。理解这些转换机制...

    浮点数开方.rar

    综上所述,浮点数开方涉及到计算机中的数值计算、浮点数表示、数值稳定性和算法设计等多个方面,是理解和优化计算性能的关键点。通过深入学习这些知识点,开发者可以更好地理解和解决与浮点数开方相关的问题。

    免疫优化算法Python实现.zip

    在Python中实现免疫优化算法,可以利用其强大的科学计算库和灵活的编程特性,使算法更加高效且易于理解和操作。 Python实现免疫优化算法时,通常会涉及以下几个核心概念: 1. 抗体编码:如同生物体中的抗体,算法...

    python算法数据结构课程视频含代码之字符串1G

    根据提供的文件信息,我们可以深入探讨有关Python算法与数据结构中的字符串处理相关知识点。这段课程视频主要涉及Python语言在处理字符串时的各种技巧与方法,对于学习Python编程语言的同学来说,掌握这些知识点至关...

    python算法学习经验

    在Python 3中,默认进行浮点数除法。 **输入样例:** ``` 330 336 ``` **输出样例:** ``` 0.9821428571428571 ``` #### 五、次方运算(**) **定义:** 次方运算符用于计算一个数值的幂。 **示例代码:** ```...

    超完整 Python基础入门知识教程 Python从入门到进阶知识大全 Python开发基础知识能力集全部课件 1885页

    Python的数据类型包括整数、浮点数、字符串、列表、元组、字典等。Python的变量类型包括整数、浮点数、字符串、列表、元组、字典等。 编写第一个Python程序需要了解基本的语法结构,包括注释、中文支持、输入变量、...

Global site tag (gtag.js) - Google Analytics