鱼C论坛

 找回密码
 立即注册
查看: 2692|回复: 3

[已解决]第5讲课后习题:使用int()转换变量类型的疑惑

[复制链接]
发表于 2023-3-10 17:29:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?

我们可爱的小甲鱼说了,小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5 向上取整为 6,向下取整为 5)

但那是对于正数来说……对于负数则刚好相反 —— 是向上取整。



但我测试以后发现:

>>> a = 5.5
>>> b = int(a)
>>> b
5
>>> a = -5.5
>>> b = int(a)
>>> b
-5    # 按上面的答案解释,返回结果不是应该为-6才对吗?
最佳答案
2023-3-10 17:31:08
实际上,Python中使用int()函数将浮点数转换为整数时,结果是根据浮点数的值向0舍入得到的。也就是说,它会向下取整到最接近的整数(即截取整数部分),而不是根据正负号向上或向下取整。

对于正数,这就是向下取整;而对于负数,它实际上是向上取整。因此,当你使用int()将-5.5转换为整数时,你得到的结果是-5,这是一个向上取整的结果。

请注意,Python中有一个另外的函数math.floor(),它会将一个浮点数向下取整到最接近的整数。而math.ceil()函数则会将一个浮点数向上取整到最接近的整数。


有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-10 17:31:08 | 显示全部楼层    本楼为最佳答案   
实际上,Python中使用int()函数将浮点数转换为整数时,结果是根据浮点数的值向0舍入得到的。也就是说,它会向下取整到最接近的整数(即截取整数部分),而不是根据正负号向上或向下取整。

对于正数,这就是向下取整;而对于负数,它实际上是向上取整。因此,当你使用int()将-5.5转换为整数时,你得到的结果是-5,这是一个向上取整的结果。

请注意,Python中有一个另外的函数math.floor(),它会将一个浮点数向下取整到最接近的整数。而math.ceil()函数则会将一个浮点数向上取整到最接近的整数。


有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 17:34:03 | 显示全部楼层
向上取整指取最小的比自己更大的整数。-5.5 < -5 ,符合向上取整的要求。只需要记住 int 是砍掉小数点及其后面的部分就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-10 17:47:02 | 显示全部楼层
tommyyu 发表于 2023-3-10 17:34
向上取整指取最小的比自己更大的整数。-5.5 < -5 ,符合向上取整的要求。只需要记住 int 是砍掉小数点及其 ...

通俗易懂,正解,大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表