2013-10-08 2 views
1

Java에서 해결할 수있는 매우 큰 수와 복잡한 문자열 방정식이 있습니다. 그 때문에 BeanShell을 사용합니다. 이 방정식에서, 비트 식 바이너리 연산을 포함 할 수있다. 나는 그것에 대해 내가 잘 지금까지 작동 각 번호에 L를 추가 엄청난 숫자를 처리 할 필요가 말했듯이Java가 잘못된 BeanShell 결과를 수신합니다.

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

1. 해야한다. 하지만 여기에 3/2과 같은 것을 계산할 때 문제가 발생했습니다. 을 수신하고 1.5을 수신하지 못했습니다. 그런 다음 1.5을 제공하는 각 숫자에 double 값으로 D을 추가하려고 시도했지만 여기서 이진 연산 and or xor 등에서 오류가 발생합니다. 물론 정수 값에만 적용 할 수 있기 때문입니다.

필요할 때 double 값을 받고 여전히 바이너리 연산을 수행하는 방법이 있습니까 (물론 정수 값을 가지고있을 때만)?

답변

0

필자는 처음에 피연산자를 두 배로 선언합니다. Beanshell을 승진시키고 강등 시키면 코드에 불확실성이 생기는 것 같습니다.

double을 int로 형 변환하고 매번 이진 연산을 수행 할 수 있습니다. 이것은 좁은 기본 변환이기 때문에 Java Language Specs에 익숙해야합니다. 난 항상 권리를 주조하고 작동 int로 이진 연산의 사이트를 떠난하지만

(Another possibly helpful answer)

+0

그래야 때문이 아니라 내가 좋아하는 뭔가를 할 때'((5-2)/2) ((3-2)/2) -> 1.5 and 0.5' 나는 단순히 소수 부분을 자르지 않고 에러를받지 않을 것입니다 ... 아마도 그러한 방정식을 푸는 BeanShell에 대한 대안이 있을까요? – wasp256

+0

정수라는 것을 알려주는 함수를 작성하지 않으시겠습니까? 예 :'isInt (i) {return Math.floor (i) == i; }' – GaryMcM

관련 문제