C# 四舍五入
此代码是游戏计算器的一部分 “数量”是用户想要制作的数量,要制作一件物品,您需要4件(/4) 例如: 多少钱?:20 20/4=5 “你需要5件 但当我输入21时,仍然显示5件,但用户需要6件才能制作21件(每件4件) 在本例中,输入为21-23时,如何将输出四舍五入,使其显示为6而不是5?C# 四舍五入,c#,rounding,C#,Rounding,此代码是游戏计算器的一部分 “数量”是用户想要制作的数量,要制作一件物品,您需要4件(/4) 例如: 多少钱?:20 20/4=5 “你需要5件 但当我输入21时,仍然显示5件,但用户需要6件才能制作21件(每件4件) 在本例中,输入为21-23时,如何将输出四舍五入,使其显示为6而不是5? (如果我解释得不够好,很抱歉)舍入函数将数字舍入到最近的一个 对于汇总,您必须使用 如果需要向下取整,则必须使用舍入功能将数字舍入到最接近的数字 对于汇总,您必须使用 如果你需要四舍五入,你必须使用数学。天
(如果我解释得不够好,很抱歉)舍入函数将数字舍入到最近的一个 对于汇总,您必须使用
如果需要向下取整,则必须使用舍入功能将数字舍入到最接近的数字 对于汇总,您必须使用
如果你需要四舍五入,你必须使用数学。天花板使用数学。天花板使用数学。天花板
四舍五入
将对数字进行四舍五入--你需要的是始终进行四舍五入,你可以通过使用天花板
函数四舍五入
将数字四舍五入--你想要的是始终进行round up,您可以通过使用天花板
函数获得,假设“amount”是整数类型,那么这里的问题是您正在第一行执行整数(整数)除法
var output = Convert.ToDecimal(amount / 4);
labelOutput.Text = "You need: " + System.Math.Round(output,0);
尝试将第一行更改为:
var output=Convert.ToDecimal(amount)/4.0;
假设“amount”是一个整数类型,那么这里的问题是您正在第一行执行整数(整数)除法
尝试将第一行更改为:var output=Convert.ToDecimal(amount)/4.0;
改用数学上限(amount/4)
。改用数学上限(amount/4)
给出完整答案(结合以上内容):
- 问题1:你在做什么
- 问题2:您需要使用而不是
amount
是一个整数,您需要在除法运算中有一个值是非整数(或者float
/double
或者decimal
,在我的示例中,我选择了decimal
,后缀为m
)。如果除法运算的两部分都是整数类型,则会得到整数答案(去掉余数)
然后调用上限
,以获取大于等于输出
的最小整数值(而不是舍入
,后者为输出
提供最接近的整数值)
要给出完整答案(结合上述内容):
- 问题1:你在做什么
- 问题2:您需要使用而不是
amount
是一个整数,您需要在除法运算中有一个值是非整数(或者float
/double
或者decimal
,在我的示例中,我选择了decimal
,后缀为m
)。如果除法运算的两部分都是整数类型,则会得到整数答案(去掉余数)
然后调用上限
,以获取大于等于输出
的最小整数值(而不是舍入
,后者为输出
提供最接近的整数值)
可能有点难看:
var-output=Convert.ToDecimal((amount+3)/4);
如果您的金额正好位于MaxValue旁边,则根据您的分母,此代码可能会在此处中断。可能有点难看:var-output=Convert.ToDecimal((amount+3)/4)
如果您的金额正好位于MaxValue旁边,则会出现一种边缘情况,根据您的分母,此代码可能会在该情况下中断。当我输入System.Math.天花(输出);
它仍然不起作用,整数之间的任何值都应向上舍入为整数(500000001应为6)无法处理什么错误?Math.天花需要一个double作为参数。请尝试Math.天花((double)输出);您也可以使用整数转换来删除我认为的小数部分,以防您可能需要使用Floor.when我输入System.Math.天花(输出)时;
它仍然不起作用,整数之间的任何内容都应向上舍入为整数(500000001应为6)不起作用,出现什么错误?数学。天花板需要一个双精度参数。请尝试数学。天花板((双精度)输出)您也可以使用整数转换来删除小数部分,我相信,在您可能需要使用Floor的情况下。谢谢各位!它现在可以工作了,我使用这个labelOutput.Text=“您需要:”+System.Math.天花((双)输出);
我如何才能将这个问题标记为已回答?@klopske您应该能够将鼠标悬停在左侧的空心勾号上,然后单击该勾号……谢谢各位!现在它可以工作了,我使用这个labelOutput.Text=“您需要:”+System.Math.天花((双)输出)
我如何才能将这个问题标记为已回答?@klopske您应该能够将鼠标悬停在左边的空心勾号上,然后单击该…Math。仅当除法的结果包含余数时,天花板才会起作用。仅当除法的结果包含余数时,天花板才会起作用通常我会有点c考虑到某种奇怪的舍入错误,导致5.0之类的值在内部等于5.00000003212或其他任何值,这可能会破坏此代码。由于他除以的数字是2的幂,这不应该是问题。通常我会有点担心某种奇怪的舍入错误,导致5.0之类的值为整数r等于5.00000003212或其他任何值,这可能会破坏此代码。因为他除以的数字是2的幂,所以这不应该成为问题。
var output = Math.Ceiling(amount / 4);
var output = amount / 4m;
labelOutput.Text = "You need: " + System.Math.Ceiling(output);