dart中的clamp函数的逻辑是什么?

Dan*_*yar 8 dart flutter

int、double、num 等数值类具有钳位功能。我尝试了一下并得到了一些结果..我猜它有一个类似的逻辑

a = math.max(-1, math.min(1, a));
Run Code Online (Sandbox Code Playgroud)

但是当我打印这段代码时,我得到了奇怪的结果

print(-100.43.clamp(-400.2, 64.2)); // -64.2
Run Code Online (Sandbox Code Playgroud)

dart的clamp函数的算法是怎样的?

aka*_*rya 11

飞镖的 Clamp 功能实际上是取数字而不是数字的符号

print(-100.43.clamp(-400.2, 64.2)); gives ->  -64.2
Run Code Online (Sandbox Code Playgroud)

因为它只需要 ( -100 ) 作为 ( 100 ) 并且如果我们这样做=>

100.clamp(-400,64.2) it gives -> 64.2
Run Code Online (Sandbox Code Playgroud)

负数出现后,最终变为:-64.2 要检查这一点,您可以这样做:

print((-100.43 + 0).clamp(-400.2, 64.2))); // it will give: -100.43
Run Code Online (Sandbox Code Playgroud)

或者

double value = -100;
print(value.clamp(-400.2, 64.2)));
Run Code Online (Sandbox Code Playgroud)

所以你可以用它来防止这种行为。