在 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)使用相同的方法。
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,