舍入一个数字

时间:2010-11-08 13:53:50

标签: c# rounding

var output = Convert.ToDecimal(amount / 4);

labelOutput.Text = "You need: " + System.Math.Round(output,0);

此代码是游戏计算器的一部分

“金额”是指用户想要制作多少,制作单品,需要4件(/ 4)

例如:

多少钱?:20

20/4 = 5

“你需要5件

但是当我输入21时,仍然说5件但用户需要6件才能制作21件(每件4件)

当输入为21时,如何将输出四舍五入使其为6而不是5?

(对不起,如果我没有解释得足够好)

8 个答案:

答案 0 :(得分:10)

使用Math.Ceiling

答案 1 :(得分:3)

给出一个完整的答案(结合上述内容):

假设amount是一个整数,您需要让除法运算中的一个值为非整数(float / doubledecimal,我在我的示例中使用decimal后缀选择了m。如果除法运算的两个部分都是整数类型,你将得到一个完整的答案(删除余数)。

然后调用Ceiling以获得等于或大于output的最小整数值(而不是Round,它将最接近的整数值提供给output)。

var output = amount / 4m;
labelOutput.Text = "You need: " + System.Math.Ceiling(output);

答案 2 :(得分:2)

圆函数将数字四舍五入到最接近的数字。

要进行汇总,您必须使用Math.Ceiling() 如果您需要向下舍入,则必须使用Math.Floor()

答案 3 :(得分:1)

var output = Math.Ceiling(amount / 4);

答案 4 :(得分:1)

假设'amount'是整数类型,那么问题在于你是在第一行中执行整数(整数)除法。

尝试将第一行更改为:var output = Convert.ToDecimal(amount) / 4.0;

答案 5 :(得分:0)

Round将关闭数字 - 你想要的是总是向上舍入,你可以使用Ceiling函数获得

答案 6 :(得分:0)

改为使用Math.Ceiling(amount / 4)

答案 7 :(得分:0)

有点丑陋,或许:var output = Convert.ToDecimal((amount+3) / 4);如果你的金额恰好在MaxValue旁边,这个代码可能会破坏,这取决于你的分母,这是一个优势。