2012-01-17 47 views
2

的正負百分之x我已經在我的課兩個量:如何找到一些

aToday, aYesterday 

我有用戶輸入1和100之間的數字X。

說,他進入10

我想要做的是找出是否aToday是10%以上的則aYesterday或低10%,然後aYesterday。

如何寫?

我沒有減少10%。 X百分比將更多:

if(aToday > (x/100 * aYesterday)) 

如何檢查10%以上?

+0

如果(aToday <(100.0-X)/100.0 * aYesterday – bdares

回答

3

10%以上:

if (aToday > aYesterday*1.1) 

10%少

if (aToday < aYesterday*0.9) 

當然要確保你與例如double實例計算,而不是int情況下,否則你就必須因意外結果舍入

編輯

對於百分率X

X以上(例如X = 10 - > 10%以上)

if (aToday > (1 + (x/100)) * aYesterday) 

和x更少

if (aToday < (1 - (x/100)) * aYesterday) 

這句話有關使用正確類型的遺體當然有效

+0

請檢查問題再次...的比例來自用戶.. – Nik

+0

的問題,指出 '如何檢查高10%?' ,但我會根據隨機百分比調整我的答案 – Robin

0
hasIncreasedMoreThanXPct = (aToday > 1 + (X/100) * aYesterday ) 
hasDecreasedMoreThanXPct = (aToday < 1 - (X/100) * aYesterday ) 
+2

'?true:false'是不需要的。 – Ishtar

0

基本上跑GE允許發言權X%的是

之間

((100 - x) * aYesterday/100 , (100 + x) * aYesterfday/100)

計算它們,並呼籲他們 (LowerBound , UpperBound)

你的支票變成

LowerBound = (100 - x) * aYesterday/100; 
    UpperBound = (100 + x) * aYesterfday/100; 
    if (aToday > LowerBound || aToday < UpperBound) 
    { 
    } 

如果你想採取避免分裂和截斷如果一切都是整數,你可以通過100多樣性。

LowerBound = (100 - x) * aYesterday; 
    UpperBound = (100 + x) * aYesterfday; 
    HundredTimesaToday = 100 * aToday; 
    if (HundredTimesaToday > LowerBound || HundredTimesaToday < UpperBound) 
    { 
    } 
0
public static boolean isMoreThanPercentage(double a, double b, double percentage) 
{ 
    return ((a/b) * 100 - 100) >= percentage; // Is a greater than b by percentage% of b or more? 
} 

例如:

isMoreThanPercentage(20, 10, 50)返回true,因爲20大於10由100%。

0
isMore = today > (1+x/100)*yesterday 
isLess = today < (1-x/100)*yesterday