gpt4 book ai didi

java - Android 应用程序上的 Math.min 问题

转载 作者:行者123 更新时间:2023-12-01 09:01:43 25 4
gpt4 key购买 nike

我正在追踪导致我的应用在屏幕上拖动触摸时出现闪烁的问题。

该问题似乎与 Math.min 在某些情况下未返回正确的结果有关。

mPointerPos.mPos.x = Math.min(mPointerPos.mPos.x, 0.9f * mDragStartPos.x);

我通过条件语句更改了函数调用,但问题仍然存在。

float min = 0.9f * mDragStartPos.x;
Log.w("!", "" + mPointerPos.mPos.x + " " + min);
mPointerPos.mPos.x = mPointerPos.mPos.x < min ? mPointerPos.mPos.x : min;
Log.w("!\t->", "" + mPointerPos.mPos.x);

输出为:

01-12 08:36:34.133 26229-26229 W/!: -0.3032546
01-12 08:36:34.134 26229-26229 W/!: -0.3032546 -1.4999999
01-12 08:36:34.134 26229-26229 W/! ->: -1.4999999
01-12 08:36:34.147 26229-26229 W/!: -0.2417283
01-12 08:36:34.148 26229-26229 W/!: -0.2417283 -1.4999999
01-12 08:36:34.152 26229-26229 W/! ->: -1.5933207
01-12 08:36:34.158 26229-26229 W/!: -0.19270718
01-12 08:36:34.159 26229-26229 W/!: -0.19270718 -1.4999999
01-12 08:36:34.159 26229-26229 W/! ->: -1.4999999

在第 6 行,我期望看到 -1.4999999,即 -0.2417283 和 -1.4999999 之间的最小值,但我得到的是 -1.5933207

我有什么遗漏的吗? mPointerPos.mPosmDragStartPos 的类型为 android.graphics.PointF

最佳答案

mPointerPos 显然是由其他线程在两行之间更新的。 mPointerPos如何更新?这段代码在哪里执行?回答这些问题可能会给您问题的答案(可能只是在两侧添加同步块(synchronized block)......或者重写程序该部分的整个逻辑)。

关于java - Android 应用程序上的 Math.min 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com