我正在尝试确定要在以后的计算中使用的数字的符号。
我有类似于以下的代码:
double value = someClass.someGetterMethod();
double sign = value / Math.abs(value);
我也试过:
double sign = (value < 0) ? -1d : 1d;
并非总是如此,但有时值是正数,符号是负数。
这两个变量都在非静态方法中的本地堆栈上,所以我不相信存在竞争条件。
不幸的是,我无法发布完整的源代码,也无法在较小的示例中复制它。我怀疑我的环境与它有关:
有问题的代码被打包到一个 jar 中,然后作为一个 zipgroupfileset 加载到一个插件 jar 文件中,该文件由 netLogo 作为“扩展”(插件)加载。因此启动了 NetLogo,它使用此代码加载包含类的插件 jar。
NetLogo 要求任何插件都需要针对 1.5 目标进行编译,因此我在我的 ant 构建文件中为 lib 和扩展设置了该设置。
我通过修改 netlogo vmargs 来连接我的 netbeans 调试器以允许远程调试
-Xdebug
-Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
我真的很难过。这是调试器如何显示变量的问题吗?可能是 NetLogo 的 1.5 编译目标要求有问题?
有任何想法吗?
谢谢