Python从入门到放弃——浮点型变量

浮点型变量

前言

上一篇文章我们研究了整数类型变量,本次我们来开始研究一下浮点类型变量。

浮点类型

浮点数在计算机编程中扮演着重要的角色。它们是一种特殊的数据类型,用于存储和处理小数或实数。在Python中,浮点数是由小数点分隔的数字组成的。在本文中,我将探讨浮点类型变量的定义、使用以及它们的一些特点。

首先,让我们来看看浮点数变量的定义。在Python中,可以使用以下语法来定义一个浮点变量:

variable_name = 3.14
print(variable_name)

最后得到的结果如下图所示:

在上面的例子中,variable_name是变量的名称,而3.14是变量的值。注意,浮点数可以是正数或负数,并且可以包含小数点。

接下来,让我们探讨一些使用浮点类型变量的例子。假设我们要计算一个圆的面积。我们知道圆的面积公式是πr^2,其中π是一个数学常数,约等于3.14,而r是圆的半径。我们可以使用浮点类型变量来存储半径和计算面积的结果。下面是一个计算圆面积的示例代码:

pi = 3.14
radius = 5.0area = pi * (radius ** 2)
print(area)

运行结果如下所示:

在上面的例子中,我们定义了一个名为pi的浮点变量,该变量存储了常数π的近似值3.14。然后,我们定义了一个名为radius的浮点变量,该变量存储了圆的半径。接下来,我们使用浮点数的乘法和幂运算,计算圆的面积,并将其存储在名为area的浮点变量中。最后,我们使用print函数将计算结果打印出来。

除了基本的数学计算,浮点类型变量在实际编程中还有许多其他的应用。例如,它们可以用于存储和处理货币值、测量数据、科学计算等。浮点数的范围通常比整数的范围大,因此它们可以表示更大或更小的值。然而,浮点数的精度是有限的,这意味着它们可能无法准确地表示某些十进制数。这是因为计算机内部使用二进制表示浮点数,并且存在舍入误差。因此,在进行关键的精确计算时,我们需要小心处理浮点数。

此外,浮点数还可以表示为特殊值NaN(Not a Number),表示一个无效的或未定义的数值。NaN通常出现在一些非法的数学运算中,比如0除以0。NaN的特点是无法进行比较,任何与NaN进行的比较操作都将返回False。

在Python中,处理浮点数的功能非常强大。Python提供了许多内置函数和模块,用于处理浮点数。这些功能包括数学运算、舍入和格式化等。例如,Python提供了math模块,其中包含了许多数学函数,如sin、cos、sqrt等。另外,Python还提供了round函数来进行舍入操作,可以将浮点数四舍五入到指定的小数位数。此外,Python还提供了format函数来格式化浮点数输出,可以指定输出的精度、宽度和对齐方式等。

总之,浮点数是一种用于表示小数的数据类型,在计算机中以近似的方式存储和处理实数。除了常规的浮点数,还有特殊值如正无穷大、负无穷大和NaN。Python提供了丰富的功能和工具来处理浮点数,包括数学运算、舍入和格式化等。

下面我们来看一下详细的代码

import math# 浮点数运算
a = 1.2
b = 2.3
c = a + b
print(c)  # 输出:3.5# 舍入操作
d = 3.14159
e = round(d, 2)
print(e)  # 输出:3.14# 格式化输出
f = 4.56789
formatted_f = "{:.2f}".format(f)
print(formatted_f)  # 输出:4.57# 使用math模块进行数学运算
g = math.sin(math.pi)
print(g)  # 输出:1.2246467991473532e-16# 特殊浮点数值
h = float('inf')
i = float('-inf')
j = float('nan')
print(h, i, j)  # 输出:inf -inf nan

这段代码主要介绍了Python中浮点数的运算和操作。

  • 首先,代码导入了math模块,该模块提供了一系列数学运算的函数和常量。
  • 然后,定义了两个浮点数a和b,进行加法运算,并将结果赋值给变量c。使用print函数打印出c的值,结果为3.5。
  • 接下来,定义了一个浮点数d,并使用round函数将其四舍五入保留两位小数,将结果赋值给变量e。使用print函数打印出e的值,结果为3.14。
  • 然后,定义了一个浮点数f,并使用format函数将其格式化为保留两位小数的字符串形式,将结果赋值给变量formatted_f。使用print函数打印出formatted_f的值,结果为4.57。
  • 接下来,使用math模块的sin函数计算了π的正弦值,并将结果赋值给变量g。使用print函数打印出g的值,结果为1.2246467991473532e-16,这是一个科学计数法的表示方式。
  • 最后,定义了三个特殊的浮点数值:正无穷大、负无穷大和非数值。使用print函数打印出h、i、j的值,分别为inf、-inf、nan。

深入了解浮点数底层

在Python中,float 类型用于表示浮点数,即带有小数部分的数字。虽然Python为程序员提供了高级别的抽象,使得我们不需要关心底层实现的细节,但了解float类型在Python内部如何表示和存储仍然是有益的。

IEEE 754 浮点数标准

Python中的float类型通常遵循IEEE 754标准来表示浮点数。IEEE 754是一个定义浮点数在计算机中如何表示、存储和运算的国际标准。它定义了多种精度的浮点数,包括单精度(32位)和双精度(64位)。Python的float类型通常是双精度(double precision)。

浮点数的构成

一个IEEE 754浮点数由三个部分组成:

  • 符号位(Sign):1位,用于表示正负号(0表示正数,1表示负数)。
  • 指数位(Exponent):对于双精度浮点数,指数位占用11位。它表示了数值的指数部分,并且有一个偏移量(对于双精度是1023)。
  • 尾数位(Mantissa 或 Fraction):对于双精度浮点数,尾数位占用52位。它表示了数值的小数部分(或称为分数部分)。

浮点数的范围与精度

由于指数位和尾数位的位数是固定的,因此浮点数的范围和精度也是有限的。

  • 范围:由于指数位的限制,浮点数有一个最小值(接近但大于0)和一个最大值(有限的)。
  • 精度:由于尾数位的限制,浮点数不能表示所有实数,只能表示一定精度范围内的数。这意味着对于某些操作(如除法),结果可能不是精确的。

Python中的float类型

在Python中,当你创建一个浮点数时(例如x = 3.14),Python会将其存储为一个遵循IEEE 754标准的双精度浮点数。你可以使用sys.float_info来获取有关Python中float类型的信息,包括其精度、范围等。

浮点数的限制

由于浮点数的表示方式和精度限制,它们在某些情况下可能会导致问题:

  • 舍入误差:由于浮点数的精度有限,某些计算可能会导致舍入误差。
  • 表示范围:非常大的数或非常小的数可能无法用浮点数精确表示。
  • 特殊值:浮点数还包括一些特殊值,如正无穷大(float(‘inf’))、负无穷大(-float(‘inf’))和非数字(float(‘nan’))。

浮点数与十进制数的差异

需要注意的是,虽然我们在日常生活中经常使用十进制数,但计算机内部使用二进制数来表示和处理数据。由于二进制数无法精确表示所有十进制小数(如1/3或1/10),因此浮点数的表示和计算可能会受到这种差异的影响。这也是为什么在进行金融计算或需要高精度计算时,通常会使用专门的库(如decimal库)来避免浮点数的舍入误差。

总结

总结起来,浮点类型变量在Python中起到了至关重要的作用。它们用于存储和处理小数和实数,可以进行各种数学运算,并具有一些特殊的特点。在实际编程中,我们需要注意浮点数的精度和舍入误差,并使用适当的函数和方法来处理浮点数。通过熟练掌握浮点类型变量的使用,我们可以更好地进行数值计算和科学编程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/368012.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据结构] --- 树

1 树的基本概念 1.1 树的定义 树是n(n>0)个结点的有限集。当 n 0 时,称为空树。在任意一棵树非空树中应满足: (1) 有且仅有一个特定的称为根 (root) 的结点; (2) 当 n > 1 时,其余结点可分为m(m>0)个互不相交的有限集…

【Unity 3D角色移动】

【Unity 3D角色移动】 在Unity 3D中实现角色移动通常涉及到几个关键步骤,包括设置角色的物理属性、处理输入、更新角色的位置以及动画同步。下面是实现基本3D角色移动的步骤和示例代码: 步骤1:设置角色的物理属性 角色通常使用Character Co…

单目相机减速带检测以及测距

单目相机减速带检测以及测距项目是一个计算机视觉领域的应用,旨在使用一个摄像头(单目相机)来识别道路上的减速带,并进一步估计车辆与减速带之间的距离。这样的系统对于智能驾驶辅助系统(ADAS)特别有用&…

【JavaWeb】利用IntelliJ IDEA 2024.1.4 +Tomcat10 搭建Java Web项目开发环境(图文超详细)

1、启动IntelliJ idea 2024.1.4 在欢迎页面,请确认好版本。因为不同的版本,搭建项目过程不太一样。 点击,新建项目。如图: 2、新建项目 在新建项目界面,选择java,在右侧信息模块内,根据个人情…

关于ant design vue 使用Modal无法关闭弹窗的解决思路

文章目录 1: 出现问题的版本2.出现问题(1)ant design 的问题(2)poina的提示报错 3.正确版本总结 1: 出现问题的版本 "ant-design-vue": "^3.2.20", "pinia": "^2.1.7", "vue"…

Ubuntu18.04新安装--无网络连接、重启黑屏解决教程

一、安装Ubuntu Ubuntu安装需要U盘作为启动盘,在目前教新的电脑中选中GPT作为分区,制作启动盘,其中在安装双系统Ubuntu时,以自定义格式作为存储空间。详细安装过程以以及如何分区请参考下列链接:内含详细安装过程&…

如何在Lazada平台快速出单?测评助力商家突破销量瓶颈

Lazada在短短的几年里已经发展成了东南亚地区最大的在线购物网站之一 ,很多商家也想要在这样一个大的跨境平台上发展。那么,对于希望在Lazada平台上大展拳脚的商家而言,出单是否容易呢? ​一、Lazada出单容易吗? Lazada出单的难易程度并非…

Simulink 模型生成 C 代码(四):比较模型仿真和生成代码的结果

接下来将验证生成的代码执行时在数值上等效于 Simulink 中建模的算法。您使用测试框架模型在普通模式下对 RollAxisAutopilot 进行仿真,并在 SIL 模式下进行仿真,然后使用仿真数据检查器比较这两个仿真。 要测试生成的代码,您可以运行软件在…

Kubernetes基于helm安装 harbor

Kubernetes基于helm安装 harbor 之前harbor的安装都是借助docker完成一键安装部署,安装完成之后harbor组件均运行到一台机器上面,本文实践harbor在k8s环境中的部署。 准备工作 根据harbor官方要求: Kubernetes cluster 1.20Helm v3.2.0 …

SpringMVC基础详解

文章目录 一、SpringMVC简介1、什么是MVC2、MVC架构模式与三层模型的区别3、什么是SpringMVC 二、HelloWorld程序1、pom文件2、springmvc.xml3、配置web.xml文件4、html文件5、执行Controller 三、RequestMapping注解1、value属性1.1、基础使用1.2、Ant风格(模糊匹配…

如何清理电脑内存?让电脑运行如飞!

电脑内存(RAM)的清理对于维持系统的流畅运行至关重要。随着使用时间的增加,系统内存会被各种应用程序和后台进程占用,导致系统响应变慢,甚至出现卡顿现象。通过有效地清理内存,可以提升电脑的性能&#xff…

数据库安全:MySQL权限体系划分与实战操作

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

网络基础:OSPF 协议

OSPF(Open Shortest Path First)是一种广泛使用的链路状态路由协议,用于IP网络中的内部网关协议(IGP)。OSPF通过在网络中的所有路由器之间交换路由信息,选择从源到目的地的最优路径。OSPF工作在OSI模型的第…

优化页面加载时间

注:机翻,未校对。 本文年代久远,除了少部分不合时宜的,其他仍有借鉴意义。 Optimizing Page Load Time 优化页面加载时间 It is widely accepted that fast-loading pages improve the user experience. In recent years, many …

【Elasticsearch】Elasticsearch动态映射与静态映射详解

文章目录 📑前言一、Elasticsearch 映射概述1.1 什么是映射?1.2 映射的分类 二、动态映射2.1 动态映射的定义2.2 动态映射的优点2.3 动态映射的缺点2.4 动态映射的应用场景2.5 动态映射的配置示例 三、静态映射3.1 静态映射的定义3.2 静态映射的优点3.3 …

Zookeeper:Zookeeper集群角色

文章目录 一、Leader选举二、Zookeeper集群角色 一、Leader选举 Serverid:服务器ID;比如有三台服务器,编号越大在选择算法中的权重越大。Zxid:数据ID;服务器中存放的最大数据ID,值越大说明数据越新&#x…

JS(JavaScript) 数据校验 正则表达式

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

摸鱼大数据——Spark Core——RDD的基本介绍和如何构建RDD

1、什么是RDD RDD:英文全称Resilient Distributed Dataset,叫做弹性分布式数据集,代表一个不可变、可分区、里面的元素可并行计算的分布式的抽象的数据集合。 Resilient弹性:RDD的数据可以存储在内存或者磁盘当中,RDD…

java常用类(3)

目录 一. 正则表达式 二. Math类 三. Random类 四. Date类 五. Calendar类 六. SimpDateFormate类 七. BigInteger类 八. BigDecimal类 一. 正则表达式 正则表达式(Regular Expression)就是用一些特殊的符号去匹配一个字符串是否符合规则,利用String类中的matches()方…

[Leetcode 136][Easy]-只出现一次的数字

目录 题目描述 具体思路 题目描述 原题链接 具体思路 ①首先看到数组中重复的数字,想到快慢指针,但是数组的元素是乱序的不好求。因此先对数组排序。使用了STL库的sort函数,时间复杂度O(nlogn)不符合题目要求,空间复杂度O(1)。…