IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python:关于对 |和%底层的探索 -> 正文阅读

[Python知识库]Python:关于对 |和%底层的探索

??? 前几天在做题的时候看到一道题‘-7%2=-1’,让我好奇余数居然可以为负,于是,我针对//和%的底层原理展开探索。

我首先先计算了几组数据以便找到规律:

?

对以上数据,我的猜想是:如有余数,余数必然与除数同号;

????????????????????????????????????????????????在此基础上可以用:(被除数-余数)/除数? 来算整数部分。

基于此猜想,我编写了一个程序来模拟//和%运算:

def pyth(a,b):
    zheng=0
    if a*b>0:#a,b同号时
        while True:
            if abs(a)<abs(b):
                break
            else:
                a-=b
                zheng+=1
        yu=a
    elif a*b<0:#a,b异号时
        while True:
            if a*b>=0:
                break
            else:
                a+=b
                zheng-=1
        yu=a
    elif a==0:#被除数为0
        yu=0
    elif b==0:
        print('ZeroDivisionError')
    return zheng,yu

for a in range(1,101):
    for b in range(1,101):
        k,m=pyth(a,b)
        if k!=(a//b) or m!=a%b:
            print('ERROR')
            print('a=',a,' ','b=',b)
            print(a//b,k,'|',a%b,m)
            break
print('OK')

#其中的函数pyth就模拟了//和%

?检验了1~100运算结果显示正确(如果该函数计算结果与真实值不同会报‘error’)

下一步,我将除数与被除数换成小数,结果报出了大量的错误:

^上图中从左到右为:? 真实//值? 函数模拟//值? |? 真实%值? 函数模拟%值

不仅结果出现了不一致 ,我发现是真实值出现了偏差。于是我又做了一组实验:

?发现当两者异号时是函数模拟值出现了偏差。

#结果到最后我也没解决浮点数的误差问题(先挖个坑,可能以后会继续讨论

1.针对小数的//和%计算,可以先转化成整数进行计算。

????????? 如:10.0%0.1——> (100%10)/10

2.对于特殊情况,也可以用decimal库进行精确的计算。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:06:37  更:2021-12-26 22:07:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:43:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码