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)
所以你可以用它来防止这种行为。
归档时间: |
|
查看次数: |
6720 次 |
最近记录: |