Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 四舍五入_C#_Rounding - Fatal编程技术网

C# 四舍五入

C# 四舍五入,c#,rounding,C#,Rounding,此代码是游戏计算器的一部分 “数量”是用户想要制作的数量,要制作一件物品,您需要4件(/4) 例如: 多少钱?:20 20/4=5 “你需要5件 但当我输入21时,仍然显示5件,但用户需要6件才能制作21件(每件4件) 在本例中,输入为21-23时,如何将输出四舍五入,使其显示为6而不是5? (如果我解释得不够好,很抱歉)舍入函数将数字舍入到最近的一个 对于汇总,您必须使用 如果需要向下取整,则必须使用舍入功能将数字舍入到最接近的数字 对于汇总,您必须使用 如果你需要四舍五入,你必须使用数学。天

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

“数量”是用户想要制作的数量,要制作一件物品,您需要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);