检查num是否在两个双数值之间- Dart



为什么不能这样做,如果你试图找出一个int是否在两个数字之间:

if (16.5 < value < 17.5)

代替它,你必须做

if (value > 16.5 && value < 17.5)

看起来有点开销

简短回答

你可以创建自己的方法,比如

between(value, 1, 10);

长回答

你必须考虑编译器是如何工作的

。它们有某种解析器来读取程序语言。

如果你写'if'条件。解析器读取'i'和'f'字符。然后期待'('符号。

if ( a > b )

检查值,检查符号,再次检查值,检查')'符号。

程序就知道这是一个条件语句。然后编写像01010101(idk)这样的机器码。但是我们不能读一些东西)。

在这个公式中。最后逐个比较值(编译器将以尽可能小的单位工作)。

在这个阶段,效率是非常重要的。返回你的代码。
if (16.5 < value < 17.5)

这个呢?

if (16.5 < value > 17.5)

和?

if (16.5 > value < 17.5)

有很多例外。但是dart可能会做出这种语法。但他们不会。

因为他们也要做一个一个比较的工作。

所以你可以创建自己的方法。

尝试以下代码:

if (value.clamp(16.6, 17.4) == value) {
// Do what you want to do
}

我认为.clamp函数是检查一个数是否小于下界(16.6)或大于上界(17.4)或介于下界和上界之间。如果数字小于下限或大于上限,则显示下限或上限,否则显示数字(我通过在DartPad中测试知道)

最新更新