技术疑问:为何5/100返回0,5*0.01却正常?float转换仍返回0.0
为什么整数除法与浮点数运算结果差异这么大?
这是新手入门时超容易踩的整数除法陷阱!我给你拆解得明明白白:
1. 5 / 100 返回0的核心原因
在很多编程语言(比如Python 2、Java、C++这类强类型语言)里,两个整数之间的除法默认是「整数截断除法」——计算时会直接舍弃小数部分,只保留商的整数部分。5除以100的实际商是0.05,整数部分为0,所以结果自然是整数0。
2. 5 * 0.01 能得到正确浮点数的原因
这里的0.01是浮点数类型,当整数和浮点数进行运算时,语言会自动触发类型提升:把整数5转换成浮点数5.0,再和0.01相乘,最终得到完整的浮点数结果0.05,小数部分自然被保留。
3. 为啥float(5 / 100)还是返回0.0?
这是运算顺序搞的鬼!括号里的5 / 100会先执行,按照整数除法规则得到整数0,之后才把这个整数0转换成浮点数,结果当然是0.0。它并不是先把5和100转成浮点数再做除法哦。
快速解决方法:触发浮点数除法
只要把其中一个操作数改成浮点数,就能得到正确结果,比如:
5.0 / 1005 / 100.0- 或者强制类型转换:
float(5) / 100
这样就能得到你想要的0.05啦!
内容的提问来源于stack exchange,提问作者SnakesCantWearBoots
相关产品推荐
相关产品推荐

