kotlin - Kotlin 测试浮点数是否在开放或半开放范围内
问题描述
在 Kotlin 中 - 是否有一种惯用的方法来测试浮点数是否在一个(或两者)范围的开始或结束是独占的范围内?
例如像
val inRange = 10.f in (0.0f until 20f)
我似乎在文档中找不到任何关于此的内容。
更新:如何处理半开放范围?
解决方案
该until
函数创建半封闭整数(非浮点)范围,其中包括左侧部分,排除右侧部分。
https://kotlinlang.org/docs/reference/ranges.html
Koltin https://kotlinlang.org/docs/reference/ranges.html#utility-functions支持封闭的浮动范围
你可以自己实现
data class OpenFloatRange(val from: Float, val to: Float)
infix fun Float.open(to: Float) = OpenFloatRange(this, to)
operator fun OpenFloatRange.contains(f: Float) = from < f && f < to
val inRange = 10f in (0.0f open 20f)
在这里,我使用了 Kotlin 的几个技巧: https ://kotlinlang.org/docs/reference/functions.html#infix-notation https://kotlinlang.org/docs/reference/operator-overloading.html#in
推荐阅读
- c++ - std::accumulate 可以抛出吗?
- excel - 如何在 VBA 中找到控件的父用户窗体
- javascript - Await 仅在异步函数中有效
- excel - 如何验证电子邮件地址格式?
- google-cloud-platform - 在 GCP 中查询项目列表
- string - 恐慌:运行时错误:切片超出范围 [2:1]
- c# - C#:运行程序并用 if 语句回答输入后,我如何让程序继续提问?
- kubernetes - 如何在 GCP 中启用 Kubernetes API?没有按照文档在这里整理
- nginx - 使用 Terraform 在没有“remote_exec”的情况下安装 NGINX
- python - 从 div 类中收集链接