如何编写基于switch/case的AddVat函数计算含VAT总价(初学者适用)
完整解决方案
这里是符合你需求的完整函数实现,用switch/case处理VAT分类,逻辑清晰适合初学者理解:
float AddVat(float price, int category) { float total_price = 0; switch(category) { // 分类1、2、3共享同一个20% VAT的计算逻辑 case 1: case 2: case 3: total_price = price * 1.2f; // 总价 = 原价 × (1 + 20%) break; case 4: total_price = price * 1.15f; // 总价 = 原价 × (1 + 15%) break; case 5: total_price = price * 1.08f; // 总价 = 原价 × (1 + 8%) break; case 6: total_price = price; // 0% VAT,总价等于原价 break; // 处理不在1-6范围内的无效分类 default: total_price = price; // 默认返回原价,你也可以改成返回错误值(比如-1.0f) break; } return total_price; }
关键细节说明
- 合并相同逻辑的case:因为分类1、2、3的VAT税率都是20%,所以把这三个
case连写,共用同一段计算代码,避免重复劳动。 - 直观的总价计算:直接用
原价 × (1 + 税率)得到含VAT的总价,比先算税额再相加更简洁,比如20%税率就是乘以1.2,一步到位。 - break的必要性:每个
case后面加break是为了跳出switch语句,防止程序继续执行后面的case代码,这是switch语句的核心规则之一。 - 处理无效分类:
default分支用来应对传入的分类不在1-6范围内的情况,这里简单返回原价,你也可以根据需求改成返回错误标识(比如-1.0f),方便调用者判断是否有非法输入。 - float类型的后缀f:用
1.2f而不是1.2(默认是double类型),可以避免不同浮点类型转换的潜在问题,适合初学者养成规范的编码习惯。
内容的提问来源于stack exchange,提问作者Viki
相关产品推荐
相关产品推荐

