时间:2021-05-23
101/100,想要的结果是1,但是算出来的结果是1.01
101 // 100
结果图
补充:python2 与 3:一般除法、除法取整、除法取余、精确减法与精确除法
python2的除法,与c语言除法类似,两个整数相除结果一定是整数,除数与被除数有一个是浮点数,结果就是浮点数。因此当两个整数相除,结果又有小数时,由于结果是整数,所以小数部分会被省略,针对这种情况,要实现真正的除法,除数与被除数至少有一个应改为浮点数。(貌似python2.7开始,除法和python3除法一样了,没有仔细考究)
a = 3b = 2print a/bprint float(a)/bprint a/float(b)print float(a)/float(b)# 结果11.51.51.5加一个int(),进行强制类型转换即可。
a = 4.5b = 3print a/bprint int(a/b)# 结果1.51利用%操作即可。
a = 5.5b = 3print a % b# 结果2.5python3的除法就直接使用"/",就可以了,不存在python2的情况
a = 3b = 2print(a/b)# 结果1.5利用"%"操作
a = 5.5b = 2print(a%b)# 结果1.5我们先看看下面的输出
a = 0.9b = 1print(b-a)print((b-a)/100)print((0.1)/100)# 结果0.099999999999999980.00099999999999999980.001python计算要把数字先转为二进制,因为浮点数以二进制形式表示时的有穷性(利用乘K取余法,0.9的二进制无限延展),会导致计算误差。下面摘自python文档原话。
On most machines today, floats are approximated using a binary fraction with the numerator using the first 53 bits starting with the most significant bit and with the denominator as a power of two.
这不是只有python才有的bug,也不是你代码的bug,所有的编程语言都会有这个问题,当然可能很多编程语言会使用某些机制来规避这种显示。回到该blog的例子,0.9的二进制表示如下:
0.1110011001100110011001100110011001100110011001100110011
1-0.9的二进制表示为:
0.0001100110011001100110011001100110011001100110011001100
转化过来就是0.09999999999999998
这时候为了实现精确运算,可以使用类decimal。
import decimaldecimal.getcontext().prec = 10 # 取小数点后精度到第10位a = 0.9b = 1print(decimal.Decimal(b)-decimal.Decimal(a))print((decimal.Decimal(b)-decimal.Decimal(a))/100)print((0.1)/100)# 结果0.10000000000.00100000000.001当然,直接使用近似函数round()也是可以的。
a = 0.9b = 1print(round(b-a, 10))print(round((b-a)/100, 10))print(round((0.1)/100, 10))# 结果0.10.0010.001以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一除法1正数除法Python3中的除法中,除法/总是返回一个浮点数,如下:>>>6/41.5>>>2/30.6666666666666666如果只想得到整数的结
环境:python3.6.1一、python3中的除法在python3中,一个算数表达式中遇到除法时,有两种不同的除法方式可以选择,分别是/和//。不同的表达式
概述在Python3中,数学运算中的除法被分为两种,分别是“真除法”,即无论任何类型相除的结果都会保留小数点,和我们实际的数学运算结果一致,而“截断除法”,则是
Python中除法有两种运算符:'/'和'//';有三种类型的除法:传统除法、Floor除法和真除法。X/Y类型:在Python2.6或者之前,这个操作对于整数
1、除法相关在python3之前,print13/4#result=3然而在这之后,却变了!print(13/4)#result=3.25"/”符号运算后是正常