1

我有非常大的数字和复杂的字符串方程要在 java 中求解。为此,我使用 BeanShell。在这个等式中还可以包含按位二进制运算,例如

 (log(100)*7-9) & (30/3-7)

应该是 1。正如我所说,我需要处理大量数字,为此我将 1 添加L到每个数字,到目前为止效果很好。但是在这里我在计算像3/2我刚刚收到1而不是这样的东西时遇到了问题1.5。然后我尝试为D每个数字添加一个 for double 值,这给了我,1.5但在这里我收到二进制操作and or xor等错误,因为它们当然只能应用于 Integer 值。

有没有办法double在需要时接收值并仍然执行二进制操作(当然只有当我有整数值时)?

4

1 回答 1

0

我会在一开始就将操作数声明为双精度数。在我看来,让 Beanshell 根据答案进行升级/降级会在您的代码中引入不确定性。

您可以将 double 转换为 int 并每次执行二进制操作。由于这是一个缩小的原始转换,您应该熟悉Java 语言规范

(另一个可能有用的答案)

于 2013-10-09T12:46:00.407 回答