python3 实现除法结果为整数

 更新时间:2021年03月16日 11:25:31   作者:自由的小白  
这篇文章主要介绍了python3 实现除法结果为整数,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题描述

101/100,想要的结果是1,但是算出来的结果是1.01

解决方案

101 // 100

结果图

补充:python2 与 3:一般除法、除法取整、除法取余、精确减法与精确除法

python2

python2除法

python2的除法,与c语言除法类似,两个整数相除结果一定是整数,除数与被除数有一个是浮点数,结果就是浮点数。因此当两个整数相除,结果又有小数时,由于结果是整数,所以小数部分会被省略,针对这种情况,要实现真正的除法,除数与被除数至少有一个应改为浮点数。(貌似python2.7开始,除法和python3除法一样了,没有仔细考究)

a = 3
b = 2
print a/b
print float(a)/b
print a/float(b)
print float(a)/float(b)
# 结果
1
1.5
1.5
1.5

python2除法取整

加一个int(),进行强制类型转换即可。

a = 4.5
b = 3
print a/b
print int(a/b)
# 结果
1.5
1

python2除法取余

利用%操作即可。

a = 5.5
b = 3
print a % b
# 结果
2.5

python3

python3除法

python3的除法就直接使用"/",就可以了,不存在python2的情况

a = 3
b = 2
print(a/b)
# 结果
1.5

python3除法取整

利用"//"操作
a = 5.5
b = 2
print(a//b)
# 结果
2.0

python3除法取余

利用"%"操作

a = 5.5
b = 2
print(a%b)
# 结果
1.5

python3精确减法与精确除法

我们先看看下面的输出

a = 0.9
b = 1
print(b-a)
print((b-a)/100)
print((0.1)/100)
# 结果
0.09999999999999998
0.0009999999999999998
0.001

python计算要把数字先转为二进制,因为浮点数以二进制形式表示时的有穷性(利用乘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 decimal
decimal.getcontext().prec = 10 # 取小数点后精度到第10位
a = 0.9
b = 1
print(decimal.Decimal(b)-decimal.Decimal(a))
print((decimal.Decimal(b)-decimal.Decimal(a))/100)
print((0.1)/100)
# 结果
0.1000000000
0.0010000000
0.001

当然,直接使用近似函数round()也是可以的。

a = 0.9
b = 1
print(round(b-a, 10))
print(round((b-a)/100, 10))
print(round((0.1)/100, 10))
# 结果
0.1
0.001
0.001

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • linux上运行python脚本,SyntaxError: invalid syntax的解决

    linux上运行python脚本,SyntaxError: invalid syntax的解决

    这篇文章主要介绍了linux上运行python脚本,SyntaxError: invalid syntax的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Django中使用Whoosh进行全文检索的方法

    Django中使用Whoosh进行全文检索的方法

    这篇文章主要介绍了Django中使用Whoosh进行全文检索的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python中max函数用于二维列表的实例

    Python中max函数用于二维列表的实例

    下面小编就为大家分享一篇Python中max函数用于二维列表的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Windows系统下Chromedriver.exe安装及配置详细教程

    Windows系统下Chromedriver.exe安装及配置详细教程

    ChromeDriver.exe是一款实用的chrome浏览器驱动工具,能够用于自动化测试、网络爬虫和操作浏览器,其主要作用是模拟浏览器操作,下面这篇文章主要给大家介绍了关于Windows系统下Chromedriver.exe安装及配置的相关资料,需要的朋友可以参考下
    2023-11-11
  • Python3实现自定义比较排序/运算符

    Python3实现自定义比较排序/运算符

    这篇文章主要介绍了Python3实现自定义比较排序/运算符,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • python 命令行传入参数实现解析

    python 命令行传入参数实现解析

    这篇文章主要介绍了python 命令行传入参数实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 2行Python代码实现给pdf文件添加水印

    2行Python代码实现给pdf文件添加水印

    你们在给PDF文件添加水印时,还在手动一页页添加吗?本文小编为大家带来了一个更方便的方法,即用Python的2行代码来实现,感兴趣的小伙伴可以学习一下
    2022-02-02
  • python清洗疫情历史数据的过程详解

    python清洗疫情历史数据的过程详解

    这篇文章主要介绍了python清洗疫情历史数据,包括数据获取方法及使用python读取csv的详细代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 利于python脚本编写可视化nmap和masscan的方法

    利于python脚本编写可视化nmap和masscan的方法

    这篇文章主要介绍了利于python脚本编写可视化nmap和masscan的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Python制作数据预测集成工具(值得收藏)

    Python制作数据预测集成工具(值得收藏)

    这篇文章主要介绍了Python如何制作数据预测集成工具,帮助大家进行大数据预测,感兴趣的朋友可以了解下
    2020-08-08

最新评论