2013-10-08 91 views
1

我有非常大的數字和複雜的字符串方程來解決在java中。爲此,我使用BeanShell。在這個等式中還可以包含按位二進制運算,例如,java收到不正確的BeanShell結果

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

應爲1 正如我所說的,我需要處理龐大的數字對於我添加了L到每一個工作正常,到目前爲止數量。但是,在計算類似3/2時我遇到問題,我剛收到1而不是1.5。然後,我試着爲每個數字添加一個D來給每個數字賦予1.5,但在這裏我收到二進制操作and or xor等的錯誤,因爲它們當然只能應用於整數值。

有沒有辦法在需要時接收double的值,並仍然執行二進制操作(當然只有當我有整數值時)?

回答

0

我會在開始時聲明操作數爲雙打。在我看來,讓Beanshell根據答案進行升級/降級會在代碼中引入不確定性。

您可以將double轉換爲int並每次執行二進制運算。由於這是一個縮小的原始轉換,您應該熟悉Java Language Specs

(Another possibly helpful answer)

+0

當我總是投的右側和左側的二進制運算的網站爲int它會工作,但我不應該,因爲當我有像'((5-2)/ 2) ((3-2)/ 2) - > 1.5和0.5'如果不簡單地切分小數部分,我將不會收到錯誤...是否有可能用BeanShell替代解決這些方程的方法? – wasp256

+0

爲什麼不寫一個函數來告訴你它是一個整數?例如:'isInt(i){return Math.floor(i)== i; }' – GaryMcM