我遇到了一个相当讨厌的问题。
假设我有小数点数2.5,我想将它四舍五入。 我所有的研究都告诉我:
Math.Round(2.5, 0, MidpointRounding.AwayFromZero)
会给我想要的结果。
然而,当完全尝试那段代码时,它会返回2,而不是3。 它甚至可以在一个空白的控制台应用程序中执行,因为我不确定是否有其他东西可能会干扰它。
我在这里误解了什么吗?基本上我只是希望我给它的数字一直在四舍五入。
答案 0 :(得分:2)
您想使用AwayFromZero。如果一个数字在两个整数之间结束,如1.5,它将舍入到2.否则,舍入将正常发生。
Here是文档。
如果您想要总是向上舍入,请使用Math.Ceiling(my_double);
。
答案 1 :(得分:2)
您在评论中提到了complexType1
。
假设int为正数,最有效的方法就是:
convert an int to half it's value, always rounded up
如果您需要处理正值和负值,
int result = (value+1)/2;
答案 2 :(得分:0)
找出解决方案:
基本上在我的代码中我从输入字段中检索一个int,它默认被转换为int,所以当我将它减半时,它会自动向下舍入(例如,5/2 = 2,而不是2.5正如我所料。)
解决方案是将输入数字转换为小数。
带有更正的代码段:
// strong is the input value
decimal calc = (decimal)strong / 2;
// targetInput is the input field for the result
targetInput.text = (Math.Round(calc, 0, MidpointRounding.AwayFromZero)).ToString();
对不起,如果我浪费了任何时间。