Python中的浮点数原理与运算分析
创新互联专注于企业全网整合营销推广、网站重做改版、南丹网站定制设计、自适应品牌网站建设、H5开发、商城网站制作、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为南丹等各大城市提供网站开发制作服务。
本文实例讲述了Python中的浮点数原理与运算。分享给大家供大家参考,具体如下:
先看一个违反直觉的例子:
s = 0.
for i in range(10): s += .1
s
0.9999999999999999
# 错误被累加
再看一个更为普遍,直接影响判断逻辑的例子:
from math import sqrt
a = sqrt(2)
a*a == a
False
之所以会出现以上的结果,在于 Python (更准确地说是计算机硬件体系结构)对浮点数的表示,我们来看计算机(基于二进制)对十进制小数 0.1 的表示,十进制小数向二进制小数转换的方法请见 Python十进制小数与二进制小数相互转换。将十进制小数 0.1 转换为二进制时的结果为 0.0001100110011001....,无限循环,计算机无法展示无限的结果,只能对结果进行截断,这是浮点数精度问题的根源。
“==” on floats
基于以上的考虑,当我们进行浮点数的相等比较时,要特别小心,直接使用 == 是有问题的,一种通用的做法即是,不是检测浮点数是否相等,而是检测二者是否足够接近,
a = sqrt(2)
abs(a*a-2) epsilon
# 判断是否小于某一小量
答: 假设用变量m接收具体的输入值,可使用float函数将输入的内容转化为浮点数,具体代码如下。
m = float(input("请输入一个数:"))
具体的功能即把输入的一个数转化为浮点数。
具体的实例如下所示。
对应打印结果如下。
希望可以帮助到你~
python中,float函数属于内置函数,其实在底层是调用了C的库。
C库中有直接送字符串转float的函数。就是atof函数。
atof具体的实现比较复杂,可以搜索“atof源码”自己学习。
字符串转int也是同理,调用C库中的atoi函数。首先学习一下C和计算机组成原理。懂得这些在内存中实际是怎么存储的。然后学习一下编译原理,从而了解高级语言的解释。
扩展资料:
由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。
众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:
NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。
2018年3月,该语言作者在邮件列表上宣布Python2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python2.7有关的支持,则需要付费给商业供应商。
参考资料来源:百度百科-Python
python 里面专门有一个 round() 函数可以将任意的浮点数或者小数保留指定的位数。
废话不多说了,直接上一个例子。
目标:将 x = 34.4567809278 保留3位小数
结果 34.457
round(x,k) 中 x 为要处理的浮点数, k 指要保留的位数
print(round(x)) #直接返回整数
python提供了三种浮点值:内置的float与complex类型,以及标准库的decimal.Decimal类型。
float类型存放双精度的浮点数,具体取值范围依赖于构建python的c编译器,由于精度受限,进行相等性比较不可靠。
如果需要高精度,可使用decimal模块的decimal.Decimal数,这种类型可以准确的表示循环小数,但是处理速度较慢,适合于财政计算。
相关推荐:《Python基础教程》
简单函数比较floatS是否相等:
def equal_float(a,b):
return abs(a-b)=sys.float_info.epsilon
其中sys.float_info.epsilon是机器可以区分出的两个浮点数的最小区别
math模块提供了许多可用于floatS的函数:
math.pi:常量3.1415926
math.pow(x,y):x的y次幂(浮点值)
……………….
使用math时先用import math导入该模块
十进制数字
decimal模块可以提供固定的十进制数,精度可以自己定。要创建Decimal,要先用import decimal导入模块。
十进制数是用decimal.Decimal()函数创建的,该函数可以接受一个整数或字符串作为参数,但不能以浮点数作参数。如果用字符串作为参数,可以使用简单的十进制数表示或指数表示,另外,decimal.Decimal的精确表述方式可以可靠的进行相等性比较。
(python3.1开始,使用decimal.Decimal from-float()函数将floats转换为十进制数,以float型数作为参数,并返回与该float最为接近的decimal.Decimal)
float(浮点型)是Python基本数据类型中的一种。
float是一种数据类型,叫浮点型数据类型,FLOAT数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用nbsp;IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有4个字节,包括一个符号位、一个8位二进制指数和一个23位尾数。
由于尾数的高顺序位始终为 1,因此它不是以数字形式存储的。此表示形式为float类型提供了一个大约在-3.4E+38~3.4E+38之间的范围。
python简介
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
Python是当今非常流行的编程语言,在互联网上经常可以看到他的身影。它应用非常广泛,例如编程、Web开发、机器学习和数据科学等。在最新的tiobe排行中Python甚至超越了Java成为顶级编程语言。