在 Kotlin 中实现 floor 模函数
每种编程语言都有有助于进行不同计算的运算符,包括算术运算符、赋值运算符、比较运算符和逻辑运算符。
这些运算符帮助我们进行常见的算术运算,但并不总能满足我们的要求。 在这种情况下,开发人员不遗余力地创建一种算法,使用这些运算符来满足他们的要求。
这些算法通常使用一种方法进行抽象; 我们只需要用正确的参数调用这个方法来得到我们的结果。
例如,mod()
是 Kotlin 中所有 Number 类型实现的扩展函数,用于计算这个数字与另一个数字的底除法余数,但它只接受 Double 或 Float 类型的参数。
在本教程中,我们将学习如何创建一个自定义函数,以使用满足开发人员要求的任何参数来计算此数字与另一个数字的 floor 除法的余数。
创建一个新的 Kotlin 项目
打开 IntelliJ IDEA 并选择文件 > 新建 > 项目。 在打开的窗口中,输入一个名为 floor-modulo 的项目,在 Language 部分选择 Kotlin,在 Build system 部分选择 Intellij。
最后,按 Create 按钮生成 Kotlin 项目。
在 Kotlin 中为 Int 创建一个自定义的 floor 模函数
生成项目后,在 src/main/kotlin 文件夹下创建一个名为 Main.kt 的文件,并将以下代码复制并粘贴到该文件中。
infix fun Int.floorMod(other: Double) =
((this % other) + other) % other
fun main(){
val intValue = 5
println(intValue.floorMod(3.2))
}
在这段代码中,我们创建了一个名为 floorMod() 的扩展函数,它是一个 Int 数据类型的函数。 此方法计算一个 Int 值与另一个 Double 类型的值相除的余数。
这是一个展示如何创建自定义实现的示例,这意味着开发人员可以使用任何数字类型实现作为此函数的参数。
请注意
,必须在应用程序使用之前先定义函数。 运行此代码并确保输出如下所示。
1.7999999999999998
为 Double 创建自定义 Floor 模函数
infix fun Double.floorMod(other: Int) =
((this % other) + other) % other
fun main(){
val intValue = 5
println(3.2.floorMod(intValue));
}
在这段代码中,我们创建了一个名为 floorMod()
的方法,它是一个 Int 数据类型的函数。 此方法计算 Double 值与另一个 Int 类型的值相除的余数。
这个例子的工作方式与前面的例子相同,如果我们需要向这个方法传递一个不同的参数,我们必须定义一个函数来接受我们想要的参数。 运行此代码并确保输出如下所示。
3.1999999999999993
为浮动创建自定义 Floor 模函数
infix fun Float.floorMod(other: Double) =
((this % other) + other) % other
fun main(){
val floatValue = 5F
println(floatValue.floorMod(3.2))
}
到目前为止,我们已经知道如何创建自定义函数来计算地板模数以满足所需的规范。 此代码创建一个名为 floorMod() 的扩展函数,它是 Float 数据类型的函数。
此方法计算 Float 值与另一个 Double 类型值相除的余数。
如前面的示例所述,为 Float 创建扩展函数以接受不同参数的过程。 运行此代码并确保输出如下所示。
1.7999999999999998
总结
在本教程中,我们学习了如何创建自定义扩展函数来帮助我们计算两个数字的底模。 我们涵盖的主题包括计算 Int、Double 和 Float 数据类型的 floor 模数。
请注意,我们应该对其余的 Number 实现(例如 Long、Short 和 Byte)使用相同的方法。
相关文章
Kotlin 中 Java String[] 的等价物
发布时间:2023/05/13 浏览次数:59 分类:Java
-
本文介绍了 Kotlin 中 Java String[] 的等价物。 我们将看到所有可能的方法来为 Kotlin 实现与 Java 中的 String[] 相同的结果。
将 Java 文件代码转换为 Kotlin
发布时间:2023/05/13 浏览次数:142 分类:Java
-
Kotlin 现在是一种官方的 Android 语言。 因此,您可能希望将 Java 文件更改为 Kotlin。 本文教您如何将 Java 转换为 Kotlin。
在 Kotlin 中使用 forEach
发布时间:2023/05/13 浏览次数:122 分类:Java
-
本文介绍 Kotlin 中 forEach 关键字的概念和使用。 我们将看到一些使用 Kotlin forEach 循环的示例来理解它。
在 Kotlin 中使用 reified 关键字
发布时间:2023/05/13 浏览次数:197 分类:Java
-
reified 关键字是在 Kotlin 中使用泛型时最常使用的编程概念。在本教程中,我们将学习如何使用两种方法解决此问题,包括将类型的类作为泛型函数的参数传递,以及将 reified 关键字与内联函数
Kotlin 中 ! 和 ? 运算符之间的区别
发布时间:2023/05/13 浏览次数:180 分类:Java
-
在 Kotlin 中,断言运算符 !! 和安全调用符 ? 使用 Null 安全。本文介绍空安全的概念。 我们也将通过如何! 和 ? 在 Kotlin 中有助于空安全。
在 Kotlin 中继承具有多个构造函数的类
发布时间:2023/05/12 浏览次数:200 分类:Java
-
本文讨论如何扩展具有多个构造函数的类。 构造函数是在创建对象时调用的函数,用于初始化类变量。在 Kotlin 中扩展具有多个构造函数的类
Kotlin中栈数据结构的使用
发布时间:2023/05/12 浏览次数:130 分类:Java
-
本篇文章我们就来学习一下Kotlin中栈的使用。 我们还将看到用于更新和更改 Kotlin 堆栈的标准函数,包括 push、pop、peek、search 和 isEmpty。我们还将研究比 Kotlin 中的堆栈更好的替代方案。
Kotlin中findViewById函数的使用
发布时间:2023/05/12 浏览次数:183 分类:Java
-
Kotlin 中的 findViewById 允许在 ID 的帮助下查看和更新视图。 本文介绍了 Kotlin 中 findViewById 函数的使用。
Kotlin runBlocking:用协程代码桥接非协程世界
发布时间:2023/05/12 浏览次数:194 分类:Java
-
Kotlin runBlocking 函数允许阻塞整个线程。 我们将在本文中看到更多关于 Kotlin Coroutine runBlocking 的信息。