Skip to content

Latest commit

 

History

History
246 lines (167 loc) · 5.62 KB

170-189509-取整操作.sy.md

File metadata and controls

246 lines (167 loc) · 5.62 KB
show version enable_checker
step
1.0
true

负数表示

回忆

  • 上次看了除法 /
  • 整数除以整数,可以得到
    • // 整除运算符
    • 余数 % 取余数运算符
  • 除数不能为零
  • 那如果除数是小数呢?🤪

动手

图片描述

  • 除法 / 运算肯定是可以的
  • 如果 // 运算呢?

小数整除

  • 小数整除也是可以的
    • 3里面有14个0.23
      • 就是2.99

图片描述

  • 结果是小数 float 类型的数字
  • 数字是可以转化为整数的
  • 小数除法可以取余么?

小数取余

图片描述

  • 逻辑和整数差不多
  • 那负数呢?
  • 负数可以整除取余数么?

负数整除取余数

图片描述

  • 好像可以回去
  • 貌似能说通
  • 可是为什么是-14.0
  • 而不是-13.0
  • 我们还是得从取整说起

四舍五入

图片描述

  • 四舍五入用看的是小数点后一位
  • 也就是十分位
  • 四舍五入
  • 除此之外还有什么取整方法么?

天花板取整

  • 只要是小数部分不为零
  • 就按照上面的数字来
  • 使用之前要先
    • import math

图片描述

  • 很像虚岁
  • 问多大了?
  • 6 岁过了半天
  • 虚岁也算 7 岁
  • 是不是天花板一定往上走呢?

天花板特例

图片描述

  • 上面的这个精度浮点型取不到
  • 从有效数字部分就给截取了

图片描述

  • 有天花板就得有地板

地板取整

图片描述

  • 就很像实岁
  • 只要没到 7 岁生日那天
  • 实岁都算 6 岁
  • 地板取整也有特例么?

地板取整特例

图片描述

  • 超出他有效数字的精度
  • 在做地板取整之前
  • 得到原始数字的时候得到的就是 3.0

取整方法

图片描述

  • 三种取整方法

  • floor 向下 地板取整

  • ceil 向上 天花板取整

  • round 理谁近找谁 四舍五入取整

  • int 函数取整的话

  • 用的是天花板还是地板呢?

int 取整

图片描述

  • 正数部分是地板
  • 负数部分是天花板
  • 这和除法运算有什么关系呢?

地板除

图片描述

  • 可以看出 python3 中的除法是地板除
  • 那取余是怎么取的呢?

地板取余

  • 因为整除是地板除
  • 所以商是地板商
  • 余数自然是地板余数

图片描述

  • 正数验证成功
  • 负数呢?

负数取余

图片描述

  • 负数取余验证成功
  • 可是如果是 $8/(-3)$
  • 不要翻页
  • 自己验证一下

除数为负数

图片描述

  • 同样是地板的方式
  • 如果被除数和除数都是负数呢?

都为负数

图片描述

  • 验证成功
  • 如果是 divmod 用的是哪种除法呢?

divmod

图片描述

  • 只要是整除取余的操作
  • 用的都是地板取整
  • 从指令角度呢?

地板(floor)

图片描述

  • //真的是地板除
    • 写的明明白白的
    • FLOOR
  • 如果是/的话
    • 是真除
    • TRUE
  • 这种地板除有什么用处么?

大写数字

  • 在阿拉伯数字之外
  • 我们也有自己进化过来的一套数字表示方法

图片描述

  • 为了避免数字混淆
  • 有的时候我们会把阿拉伯数字变成大写数字
  • 12345
  • 壹万贰仟叁佰肆拾伍

代码

given = 12345
wan = given // 10000
qian = (given // 1000) % 10
bai = (given // 100) % 10
shi = (given // 10) % 10
ge = given % 10
position = tuple("万仟佰拾") 
numbers = tuple("零壹贰叁肆伍陆柒捌玖")
result = numbers[wan] + position[0]
result += numbers[qian] + position[1]
result += numbers[bai] + position[2]
result += numbers[shi] + position[3]
result += numbers[ge]
print(result)
  • 这样我们就可以得到大写数字了
  • 这代码有点复杂
  • 可以先玩一玩
  • 我们以后会详细了解细节

总结

  • 这次观察余数细节
  • 有三种取整方法
    • 向上天花板
    • 向下地板
    • 四舍五入
  • 整除取余数用的都是向下地板法
    • 但有时候会出某些错误

图片描述

  • 如果不用整除的话会如何呢?
    • 不用整除的话
      • 商很可能是一个小数

图片描述

  • 那这小数到底是怎么存成0101二进制的呢?🤪

  • 下次再说 👋