如何找到一个数字的加或减x%

时间:2012-01-17 13:50:02

标签: java math

我班上有两个数量:

aToday, aYesterday

用户输入的数字X在1到100之间。

说他进入10。

我想要做的是找出aToday比昨天晚10%或比昨天低10%。

如何写这个?

我的收入减少了10%。 X%将是:

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

如何检查10%以上?

5 个答案:

答案 0 :(得分: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 less

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

关于使用正确类型的说法当然有效

答案 1 :(得分:0)

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

答案 2 :(得分:0)

基本上允许说 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 ) 
    {
    }

答案 3 :(得分: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比100%大10。

答案 4 :(得分:0)

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