int,double,num等数值类具有钳位功能。我尝试了一下,并得到了一些结果。.我猜它具有类似
的逻辑a = math.max(-1, math.min(1, a));
但是当我打印此代码时,我得到了奇怪的结果
print(-100.43.clamp(-400.2, 64.2)); // -64.2
dart的钳位函数的算法是什么?
答案 0 :(得分:0)
飞镖的Clamp功能实际上是使用数字而不是数字的符号
print(-100.43.clamp(-400.2, 64.2)); gives -> -64.2
因为仅将(-100)设为(100),并且如果这样做=>
100.clamp(-400,64.2) it gives -> 64.2
并且在负数之后最终变为:-64.2 要检查这一点,您可以执行以下操作:
print((-100.43 + 0).clamp(-400.2, 64.2))); // it will give: -100.43
或
double value = -100;
print(value.clamp(-400.2, 64.2)));
因此您可以使用它来防止这种行为。
答案 1 :(得分:0)
实现是:
double clamp<T extends num>(T number, T low, T high) =>
max(low * 1.0, min(number * 1.0, high * 1.0));
所以它的作用是根据数字返回一个介于低和高之间的值。 我认为实施是不言自明的。