我試圖找到與Java二次方程的可能的整數根。如何確定雙變量是否具有整數值?
下面是從我的代碼片斷:
double sqrtDiscriminant = Math.sqrt(b * b - 4 * a * c);
double root1 = ((-1.0 * b) - sqrtDiscriminant)/(2.0 * a);
double root2 = ((-1.0 * b) + sqrtDiscriminant)/(2.0 * a);
對於a = 2
,b = -1
和c = -40755
,根部中的一個是143.0
(143.0
打印時餘回聲,所以我到控制檯'm只對這樣的 double值感興趣,而不是143.00001
) 我的問題是,我怎樣才能確保任何root有一個整數值? 如果root1 = 143.0
則例如root1 == 143
應該返回true。我試過root1 == Math.floor(root1)
,但它沒有奏效。
也許是root1 * 1000 == Math.floor(root1)* 1000? – Kubi
我認爲最好檢查一下傳遞給等式的'Double.intValue(root1)'是否真的滿足它。 –
你永遠不會在數字水平上解決這個問題。有限的計算機不能對實數的完整複雜性進行建模。 –