我班上有两个数量:
aToday, aYesterday
用户输入的数字X在1到100之间。
说他进入10。
我想要做的是找出aToday比昨天晚10%或比昨天低10%。
如何写这个?
我的收入减少了10%。 X%将是:
if(aToday > (x/100 * aYesterday))
如何检查10%以上?
答案 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