Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.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# - Fatal编程技术网

C# 小数点四舍五入到下一个数字

C# 小数点四舍五入到下一个数字,c#,C#,有人能帮我解决以下问题吗? 我认为这很简单,但我无法理解: decimal _number = 17 / 15; // result is 1,1333333333 _number = Math.Round(_number, 1, MidpointRounding.AwayFromZero); // result is 1,1 如果变量_数有小数,我希望它四舍五入到下一个数。在这种情况下,它将是:_number=2。 提前感谢您正在执行整数除法!结果与您的想法不同: decimal _n

有人能帮我解决以下问题吗? 我认为这很简单,但我无法理解:

decimal _number  =  17 / 15;  // result is 1,1333333333
_number = Math.Round(_number, 1, MidpointRounding.AwayFromZero); // result is 1,1
如果变量_数有小数,我希望它四舍五入到下一个数。在这种情况下,它将是:_number=2。 提前感谢

您正在执行整数除法!结果与您的想法不同:

decimal _number  =  17 / 15;
结果是1,而不是1133333。您需要这样做:

decimal _number = 17M / 15M;
然后,您可以使用该方法,该方法只需将下一个较大的整数返回给给定的数字:

decimal nextBiggerInt = Math.Ceiling(_number);
你在这里执行整数除法!结果与您的想法不同:

decimal _number  =  17 / 15;
结果是1,而不是1133333。您需要这样做:

decimal _number = 17M / 15M;
然后,您可以使用该方法,该方法只需将下一个较大的整数返回给给定的数字:

decimal nextBiggerInt = Math.Ceiling(_number);
使用方法

使用方法


您必须像这样修正整数除法,因为17/15是1:

在此之后,只需使用:

int number = (int)Math.Ceiling(_number);
这导致:

0.0 => 0
0.1 => 1
1.1 => 2
1.7 => 2
2.1 => 3
如果您的两个数字是int类型的参数,只需使用Decimal.Divide:


您必须像这样修正整数除法,因为17/15是1:

在此之后,只需使用:

int number = (int)Math.Ceiling(_number);
这导致:

0.0 => 0
0.1 => 1
1.1 => 2
1.7 => 2
2.1 => 3
如果您的两个数字是int类型的参数,只需使用Decimal.Divide:


请看一看您的问题是_number是1,而不是您认为的1.33333。17/15返回1,无论您分配它的类型是什么,因为它是整数除数。如果_number是负数,您希望舍入到什么?数学。上限-2.5给出-2。看看你的问题是_数是1,而不是你认为的1.33333。17/15返回1,无论你分配它的类型是什么,因为它是整数除数。如果_数是负数,你想舍入到什么?Math.天花-2.5给出了-2。@downvoter:请添加一条注释,解释为什么您拒绝使用您的解决方案-您甚至没有使用Math.天花,您仍然使用17/15将sufix添加到文字中。整数部分是可以的,但您仍然返回1m而不是2。。。你看,否决票不是徒劳的,为什么说使用Math.天花板,而你的代码是Math.Round?非常令人困惑的帖子。@downvoter:请添加一条注释,解释您为什么拒绝投票。您是否尝试过您的解决方案-您甚至没有使用Math.天花板,您仍然使用17/15added sufix to literalsnow整数部分是可以的,但您仍然返回1m而不是2。。。你看,否决票不是徒劳的,为什么说使用Math.天花板,而你的代码是Math.Round?非常令人困惑的post.Works,假设原始数字实际上是十进制数字,而在OP的示例中并非如此。Works,假设原始数字实际上是十进制数字,在OP的例子中,情况并非如此。Math.Round_数字+0.5M会给你3,如果你的原始数字是2.0M。这是真的:-编辑我的答案。Math.Round_数字+0.5M会给你3,如果你的原始数字是2.0M。这是真的:-编辑我的答案。