一道程序设计题 double类型变量舍入原则
题目:Theroundingrulesforsalestaxarethatforataxrateofn%,ashelfpriceofpcontains(np/100rou...
题目:
The rounding rules for sales tax are that for a tax rate of n%, a shelf price of p contains
(np/100 rounded up to the nearest 0.05)amount of sales tax.
然后给了几组数据例子:
输入商品价格14.99,tax rate = 10% 输出售价16.49
输入商品价格11.25,tax rate = 5% 输出售价11.85
问题:根据第一组数据计算:14.99*(1+10%) = 16.489 舍入成16.49还是想的通的
然而第二组数据就比较坑:11.25*(1+5%) = 11.8125 为什么舍入成11.85啦???
题目中的舍入原则没理解啊!!
谁来告诉我! 展开
The rounding rules for sales tax are that for a tax rate of n%, a shelf price of p contains
(np/100 rounded up to the nearest 0.05)amount of sales tax.
然后给了几组数据例子:
输入商品价格14.99,tax rate = 10% 输出售价16.49
输入商品价格11.25,tax rate = 5% 输出售价11.85
问题:根据第一组数据计算:14.99*(1+10%) = 16.489 舍入成16.49还是想的通的
然而第二组数据就比较坑:11.25*(1+5%) = 11.8125 为什么舍入成11.85啦???
题目中的舍入原则没理解啊!!
谁来告诉我! 展开
1个回答
推荐于2016-02-08
展开全部
你不应该用 价格*(1+n/100) 得到的值作为舍入的值。
应该只算出来实际tax,对tax进行舍入(其实只会入,不会舍的),把舍入后的tax再加上原来价格作为出售价格。
14.99*0.1 = 1.499 ~~ 1.50
1.50 + 14.99 = 16.49
11.25*0.05 = 0.5625 ~~0.60 (在这里体现没有舍,只有入,rounded up,向上取0.05的倍数)
0.60 + 11.25 = 11.85
其实你的想通和想不通反过来了。
题目中说的得到的值进行舍入之后应该是0.05的倍数,所以你理解的16.49是不符合题目要求的舍入之后的要求的。而11.85就符合要求。
应该只算出来实际tax,对tax进行舍入(其实只会入,不会舍的),把舍入后的tax再加上原来价格作为出售价格。
14.99*0.1 = 1.499 ~~ 1.50
1.50 + 14.99 = 16.49
11.25*0.05 = 0.5625 ~~0.60 (在这里体现没有舍,只有入,rounded up,向上取0.05的倍数)
0.60 + 11.25 = 11.85
其实你的想通和想不通反过来了。
题目中说的得到的值进行舍入之后应该是0.05的倍数,所以你理解的16.49是不符合题目要求的舍入之后的要求的。而11.85就符合要求。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询