// here I set the discount which after the subtraction should be 150 euro
public int SetDiscountPrice()
{
return price = price - (10/100)*price;
}
在这里我调用方法SetDicountPrice
但它不起作用
Console.WriteLine("\nAfter selling 1 item for {0} euro, number of sofas left is {1}",sofa.SetDiscountPrice(), sofa.SellOneProduct());
答案 0 :(得分:2)
int / int = int
因此您的计算结果为x - 0 = x
,因为10/100
等于0
如果要使用浮点值计算,请使用
return price = (int)(price - (10m / 100m) * price); // m for decimal type
或者您只想在不更改初始价格的情况下获取价值
return (int)(price - (10m / 100m) * price);
并考虑使用类型decimal
作为货币值
答案 1 :(得分:1)
(10/100)
是一个等于0的表达式。
鉴于你告诉我们price
是一个整体类型,你应该使用
return price = price - price / 10;
并注意这将始终围绕结果。或者,使用
return price = price * 9 / 10;
将向下舍入,但请注意,由于计算过程中int
的数量级增加,这很容易受到整数溢出的影响。
答案 2 :(得分:0)
<强>解决方案:强>
一个简单的修复方法是将其转换为小数(请注意,在这种情况下,价格必须是小数):
return price = price - (decimal)10/100*price;
或使用小数作为除数:
return price = price - 10M/100M*price;
你显然也需要调整你的回报类型:
public decimal SetDiscountPrice(){
return price = price - (decimal)10/100*price;
}
重要信息:
也许你应该真的过分思考你的尝试。以“Set”开头的方法听起来应该是属性,我认为在你的情况下它肯定是可能的。你确定你想让你的setter方法改变你的价值并同时归还吗?也许以下可以帮到你:
class YourClass{
public decimal Price {get; set;}
public decimal DiscountPrice => (decimal)10/100*Price;
}