2012-01-17 2 views
2

У меня есть две величины в моем классе:как найти плюс или минус х процентов от числа

aToday, aYesterday 

У меня есть число X от 1 до 100, введенного пользователем.

Скажи, что он входит в 10.

То, что я хочу сделать, это выяснить, если aToday составляет 10 процентов больше, чем aYesterday или 10 процентов меньше, чем aYesterday.

Как это написать?

Я не получаю на 10 процентов меньше. X процентов больше будет:

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

Как проверить на 10 процентов больше?

+0

если (aToday <(100,0-х) /100.0 * aYesterday – bdares

ответ

3

10% больше:

if (aToday > aYesterday*1.1) 

10% меньше

if (aToday < aYesterday*0.9) 

Конечно убедитесь, что вы расчета с, например double экземпляров и не int экземпляров, или вы будете иметь неожиданные результаты из-за округление

Редактировать

В процентном х

х более (например, х = 10 -> 10 процентов больше)

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

и х меньше

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 
Смежные вопросы