前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Python完全自学教程》免费在线连载3.1.2

《Python完全自学教程》免费在线连载3.1.2

作者头像
老齐
发布2022-04-01 09:59:04
3640
发布2022-04-01 09:59:04
举报
文章被收录于专栏:老齐教室

★本小节是《Python 完全自学教程》第三章的内容,之前已经发布了第一小节,请参阅:http://www.itdiffer.com/self-learning.html”

3.1.2 浮点数

数学中的“小数”,在 Python 中一般用“浮点数类型”表示(与浮点数对应的是“定点数”,建议读者参考3.1.1节【自学建议】的方法研究此概念),按照下面的方式,即可创建一个浮点数对象:

代码语言:javascript
复制
>>> pi = 3.14
>>> type(pi)
<class 'float'>

通过键盘输入3.14,然后用内置函数 type() 得到了此对象的类型 <class 'float'> ,即 float 类型,翻译为“浮点数”类型。

3.1.1节中提到过 int 类型有与之对应的内置函数 int(),同样,float 类型也有与之对应的内置函数 float(),通过它也能够创建浮点数。

代码语言:javascript
复制
>>> f = float()
>>> f
0.0
>>> type(f)
<class 'float'>

此处用 float() 创建的浮点数是 0.0 (用变量 f 引用),它跟 0 有区别吗?类似的问题还可以是 1.0 (浮点数),与 1 (整数),有区别吗?

从纯粹数学角度看,

0.0 = 0,\quad 1.0=1

,注意:这是数学上的比较结果,如果搬到 Python 中,会这样:

代码语言:javascript
复制
>>> 1.0 = 1
  File "<stdin>", line 1
    1.0 = 1
    ^
SyntaxError: cannot assign to literal

为什么会这样?

数学中的 = 表示两个数值相等,而 Python 语言中的 = 符号则表示的是一个变量与一个对象建立引用关系(详见第2章2.3节),如 pi = 3.14 。所以在 Python 语言中,如果判断两个值是否相等,不得不使用另外一个符号:== 。输入方法:连续输入两个英文状态下的=符号,中间不能有空格和其他符号。

代码语言:javascript
复制
>>> 0.0 == 0
True
>>> 1.0 == 1
True

返回值是 True (这是布尔值,参阅3.7节),说明 == 符号两侧的数字是相等的(在 == 两侧,与数字之间不论是否有空格,均不影响计算结果,但有空格更“好看”)。但是,1.01 不是同一种类型(一个是浮点数类型,另外一个是整数类型),也就是说它们不是“同一个”对象。

在 Python 语言中,要想判断“两个”对象是不是“同一个”——有点拗口的说辞,用代码来说话就容易理解了:

代码语言:javascript
复制
>>> id(1)
140696716712240
>>> id(1.0)
140696719619056

这里使用了一个内置函数 id(),它的返回值是参数对象的内存地址——简单理解,就是数字 1 在内存中的存储位置编号,并且用十进制的形式表示。如果“两个”对象的内存地址一样,那么它们是“同一个”对象。这就如同在软件系统中,用身份证号作为注册用户的唯一标识,如果身份证号相同,就认为是同一个用户(前提是身份证号与个人是一对一的关系)。

尽管 1.01 不是同一对象,但从数学和日常习惯的角度看,“ 1.0 就是 1”,比如财务人员填写金额的时候,通常将

1

元人民币,一般会写成

1.00

元人民币。于是乎就有一种需要,判断 1.00 这个浮点数是不是 1 ——有点绕,慢慢读,你能明白我的意思。

代码语言:javascript
复制
>>> num = 1.23
>>> num
1.23
>>> num.is_integer()   # (3)
False
>>> fee = 1.00
>>> fee
1.0
>>> fee.is_integer()    # (4)
True

在上述操作中,

1.23

这个浮点数显然“不是”

1

。注释(3)的含义是调用了浮点数对象 num (完整地表述,应该是“变量 nun 所引用的浮点数对象”,可以简化为“浮点数对象 num ”)的 is_integer() 方法,来判断该浮点数“是不是”对应的整数,返回值是 False,说明“不是”;注释(4)的返回值是 True ,说明变量 fee 引用的浮点数 1.00 “就是” 1

请读者在阅读上文的时候注意,“是”、“不是”、“就是”等均用了引号,意思是根据数学和日常习惯进行判断,而非 Python 中根据该对象的内存地址判断是否为同一个对象。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 3.1.2 浮点数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档