鱼C论坛

 找回密码
 立即注册
查看: 2857|回复: 5

python 奇怪的情况,是我某一节没听好吗?

[复制链接]
发表于 2018-3-1 12:13:10 | 显示全部楼层 |阅读模式

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

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

x
QQ图片20180301121315.png

如图,b的值为什么会这样?要怎么才正常??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-1 12:42:54 | 显示全部楼层
b的值是正常的,因为计算机本来就存在误差,无法“完全正确”
但是并不影响实际的计算和编程逻辑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 13:04:16 | 显示全部楼层
我记得以前学c语言的时候也有这个,刚才测试了一下,比如b=1/3然后你再*3,结果在c里面是0.99999999而不是1.(用python计算是1),就像是整形和浮点型之间的转换,会有一点不同。传统整数除法会舍去小数部分,返回一个整型。如果操作数之一是浮点型,则执行真正的除法。
比如: >>> 5/0.3
16.666666666666668
>>> 3/float(5)
0.6
建议这类计算设置保留位数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 15:06:49 | 显示全部楼层
问题出在计算机进行计算时,需要转化为二进制,1.8转化的时候误差就产生了,所以是正常现象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-1 15:07:50 | 显示全部楼层
BngThea 发表于 2018-3-1 12:42
b的值是正常的,因为计算机本来就存在误差,无法“完全正确”
但是并不影响实际的计算和编程逻辑

那我要怎么能令b的值只保留小数后两位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 15:11:23 | 显示全部楼层
checkily 发表于 2018-3-1 15:07
那我要怎么能令b的值只保留小数后两位

无法设置,你可以在输出时设置格式
比如"%.2f"%b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 07:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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