% 不是取模运算符?
时间:2022-07-22
本文章向大家介绍% 不是取模运算符?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
为什么我问这个问题,因为我今天才发现不同语言中 % 的含义是不同的,因为我是主学 java
的,一直以为 % 就是取模,但是我错了。
这还要从一道题目说起:如图,为什么在 Python 中 -17 % 10 = 3
?
大家可以直接看下面的解释,他说的不完全对,最后会解释原因。
假设 r = a - n * [a / n]
,重点在 a / n
,该怎么算,这里就是 -17/10
,结果是-1.7
,那么按照 -2
算还是按照 -1
算呢?
我们先留着不说,先来看一下取模和取余的区别:
- 取余,遵循尽可能让商
向0靠近
的原则,fix()
; - 取模,遵循尽可能让商
向负无穷靠近
的原则,floor()
。
第一步:先求c = a / n
,结果是 -2
(向负无穷方向舍入) 和 -1
(向0方向舍入);
第二步:计算模和余数的公式相同,但因 c 的值不同,求模时r = 3
,求余时r = -7
。
总结:当a和n符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求模运算结果的符号和n一致,求余运算结果的符号和a一致。
各个环境下 % 运算符的含义不同,比如 C/OC/C++
,Java
中为取余,而 Python
则为取模。
所以我们的疑惑就解开了,因为在 Python 中 % 是取模,而在 Java 中为求余。两者的区别就在于是往0取整(取余)还是负无穷取整(取模)。
为什么那个人的回答不全对呢?因为不是 Python 规定的向负无穷取整,而是取模运算就是往负无穷取整,在 Python 中 % 是取模运算,而在那几个语言中是取余运算。
个人理解,如有疏漏请指出。
- Hadoop学习笔记
- 利用硬链接和truncate降低drop table对线上环境的影响
- 手把手教你实现GAN半监督学习
- 【超全】C语言小白最容易犯的17种错误,你中了几个?
- Oracle 12.2新特性掌上手册 - 第五卷 RAC and Grid
- ResNet, AlexNet, VGG, Inception: 理解各种各样的CNN架构
- 机器学习实战---线性回归提高篇之乐高玩具套件二手价预测
- 【Oracle12.2新特性掌上手册】-第八卷 PDB的快速创建与移除
- 《机器学习实战》学习笔记(十一):线性回归基础篇之预测鲍鱼年龄
- 你必须要知道CNN模型:ResNet
- CNN模型之SqueezeNet
- YOLO算法的原理与实现
- Batchnorm原理详解
- 【动手实践】Oracle 12.2 新特性:自动的列表分区创建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Robot Framework 安装配置
- ant下调用JMeter
- Arduino Pro 从安装->卸载
- JVM的基础知识点Java的内存模型
- Apollo配置中心管理后台的详解
- 麒麟子惯用框架分享(建议收藏)
- 全民打枪!在3D模型上的2D血条如何实现?
- SEO工具脚本,Python百度下拉框关键词采集工具
- 聊聊“异步”
- springboot解决前后端数据跨域问题
- 单细胞数据中到底应该如何处理线粒体基因
- Seurat小提琴图为什么有的只有点儿?
- Layui解决table日期的格式化问题
- Telegraf+Influxdb+Grafana 轻量级监控系统部署
- 国产开源文档管理系统——Wizard