Trying to calculate tax due based on varying reported taxable incomes. All input values return my if statement condition ($0).

1 次查看(过去 30 天)
t=input('Enter total income: ');
% Calculate Tax due
if (0<t<=6000)
due= 0
elseif (6000<t<=34000)
due= 0.15*(t-6000)
elseif (34000<t<=80000)
due= 4200+0.30*(t-34000)
elseif (80000<t<=180000)
due= 18000+0.40*(t-80000)
elseif (180000<t)
due= 58000+0.45*(t-180000)
else
disp('invalid input')
end

采纳的回答

Walter Roberson
Walter Roberson 2018-3-29
80000<t<=180000 means ((80000<t)<=180000) . The first part, (80000<t) returns 0 (false) or 1 (true), and the second part compares that 0 or 1 to 180000, which is always satisfied.
  2 个评论
Steven Lord
Steven Lord 2018-3-30
And in fact if you write your code in MATLAB Editor in release R2017b or later (at least that's as far back as I checked) Code Analyzer will warn you that (a < x < b) and similar for the other relational operators may not do what you think it does and offer guidance on what you should do instead.
(80000 < t) & (t <= 180000)

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Software Development Tools 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by