Swift学习笔记-基本运算符(Basic Operators)-求余运算符

求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数)。

注意:
求余运算(%)在其他语言也叫取模运算。然而严格说来,我们看该运算符对负数的操作结果,"求余"比"取模"更合适些。

我们来谈谈取余是怎么回事,计算9 % 4,你先计算出4的多少倍会刚好可以容入9中:

2倍,非常好,那余数是1(用橙色标出)

在 Swift 中可以表达为:

9 % 4    // 等于 1

为了得到a % b的结果,%计算了以下等式,并输出余数作为结果:

a = (b × 倍数) + 余数

倍数取最大值的时候,就会刚好可以容入a中。

94代入等式中,我们得1

9 = (4 × 2) + 1

同样的方法,我们来计算 -9 % 4

-9 % 4   // 等于 -1

-94代入等式,-2是取到的最大整数:

-9 = (4 × -2) + -1

余数是-1

在对负数b求余时,b的符号会被忽略。这意味着 a % b 和 a % -b的结果是相同的。

浮点数求余计算

不同于 C 语言和 Objective-C,Swift 中是可以对浮点数进行求余的。

8 % 2.5   // 等于 0.5

这个例子中,8除于2.5等于30.5,所以结果是一个Double0.5

时间: 2024-10-10 05:00:26

Swift学习笔记-基本运算符(Basic Operators)-求余运算符的相关文章

Swift学习笔记- 2.基本运算符

赋值运算符 如果赋值的右边是一个多元组,它的元素可以马上分解多个变量或变量 let (x, y) = (1, 2)// x = 1, y = 2 Swift 赋值操作并不返回任何值,所以下面代码是错误的: if x = y {     //此句错误,因为x = y 并不反悔任何值} “+” 也可用于字符串的拼接: "hello" + “world" 两个字符类型 或 一个字符类型和一个字符串类型,相加会生成一个新的字符串类型: let dog: Character = &qu

Swift学习笔记-教程学习一基础篇

1.1 常量和变量(Constants and Variables) 常量和变量把一个名字和一个指定类型的值关联起来.常量(不需要改变的值)值一旦设定就不能改变,而变量的值可以随意更改.如果可能,尽量使用常量. 声明Declaring Constants and Variables 常量和变量必须在使用前声明,用 let 来声明常量,用 var 来声明变量. let maximumNumberOfLoginAttempts = 10 var currentLoginAttempt = 0 你可以

SWIFT学习笔记03

1.断言 let age = -3 assert(age >= 0, "A person's age cannot be less than zero") // 因为 age < 0,所以断言会触发 2.Swift赋值符(=)不返回值,以防止把想要判断相等运算符(==)的地方写成赋值符导致的错误.数值运算符(+,-,*,/,%等)会检测并不允许值溢出. 3.在对负数b求余时,b的符号会被忽略.这意味着 a % b 和 a % -b的结果是相同的,但-a是不一样的. 4.不同

Swift学习笔记七:闭包

闭包可以 捕获 和存储其所在上下文中任意常量和变量的引用. Swift 会为您管理在 捕获 过程中涉及到的内存操作. 在 函数 章节中介绍的全局和嵌套函数实际上也是特殊的闭包,闭包采取如下三种形式之一: 1. 全局函数是一个有名字但不会捕获任何值的闭包 2. 嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包 3. 闭包表达式是一个可以捕获其上下文中变量或常量值的没有名字的闭包 一.闭包表达式 闭包函数类似于Objective-C中的block.下面我们用事实说话: let counts =

Swift学习笔记(5)--数组

数组的下标从0开始计数,相关方法属性涉及到下标时也从0开始计数 1.定义: //1.可变数组 var cityArray = ["Portland","San Francisco","Cupertino"] //2.不可变数组 let cityArray2 = ["Portland","San Francisco","Beijing"] //3.空数组 var animalArray =

Swift学习笔记(三)

六 函数 Swift的统一的功能语法足够灵活来表达任何东西,无论是甚至没有参数名称的简单的C风格的函数表达式,还是需要为每个本地参数和外部参数设置复杂名称的Objective-C语言风格的函数.参数提供默认值,以简化函数调用,并通过设置在输入输出参数,在函数执行完成时修改传递的变量. Swift中的每个函数都有一个类型,包括函数的参数类型和返回类型.您可以方便的使用此类型像任何其他类型一样,这使得它很容易将函数作为参数传递给其他函数,甚至从函数中返回函数类型.函数也可以写在其他函数中来封装一个嵌

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

SWIFT学习笔记02

1.//下面的这些浮点字面量都等于十进制的12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0//==12+3*(1/16) 2.//类型别名,用typealias关键字来定义类型别名 typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min 3.//元组 let ht

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会