Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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
四舍五入至小数点后2位C#_C# - Fatal编程技术网

四舍五入至小数点后2位C#

四舍五入至小数点后2位C#,c#,C#,我感兴趣的是如何以某种稍微特殊的方式将双变量四舍五入到小数点后2位。我到底是什么意思?数学。四舍五入(数字,2)很好,但是。。。 例如,我有17.0449999这样的数字 Math.Round(17.044999, 2) // 17.04 但是那样的话,我想要17.05分。我找到了一种方法,例如: Math.Round(17.044999, 3) // returns 17.045 Math.Round(17.045, 2) // returns 17.05 我想问的是,有没有其他/更好/更

我感兴趣的是如何以某种稍微特殊的方式将双变量四舍五入到小数点后2位。我到底是什么意思?数学。四舍五入(数字,2)很好,但是。。。 例如,我有17.0449999这样的数字

Math.Round(17.044999, 2) // 17.04
但是那样的话,我想要17.05分。我找到了一种方法,例如:

Math.Round(17.044999, 3) // returns 17.045
Math.Round(17.045, 2) // returns 17.05
我想问的是,有没有其他/更好/更简单的方法可以做到这一点

[编辑]:

我想我发现这有点奇怪。从一开始:

我们讨论具体的数字。我必须从奖品中计算5%,在这种情况下,奖品是340,9。当我在windows计算器340,9*0.05中进行计算时,结果是17045。和我在Excel中计算时得到的结果相同。但当我用C#做同样的计算时,我得到的结果是1704499998。很明显,它非常接近17.045,我们可以很容易地将其取整。但问题是,我不能将每个结果四舍五入到小数点后3位,因为这可能会改变其他结果

似乎这是特殊情况或C#计算“太精确了”。

您可以使用:

System.Math.Ceiling (n * 100) / 100;
如下文所述:

例如:

System.Math.Ceiling (17.044999 * 100) / 100; // Returns 17.05
您可以使用:

System.Math.Ceiling (n * 100) / 100;
如下文所述:

例如:

System.Math.Ceiling (17.044999 * 100) / 100; // Returns 17.05

所以你不想把它绕错吗?你可能应该坚持你已经在做的事情,因为你找不到一个内置的舍入函数来产生不正确的结果。当你想向上舍入而不是向下舍入时,你能描述一下吗?@musefan实际上,如果数字是17.0449999,那么数字是的,我知道这是错误的,我完全同意。但这是我的项目必须满足的一个要求——这比我更强大:)@PCLuddite:这远远超出了我的预期。。。但它似乎只适用于0.999(循环)等于1So。。。你不想把它绕错吗?你可能应该坚持你已经在做的事情,因为你找不到一个内置的舍入函数来产生不正确的结果。当你想向上舍入而不是向下舍入时,你能描述一下吗?@musefan实际上,如果数字是17.0449999,那么数字是的,我知道这是错误的,我完全同意。但这是我的项目必须满足的一个要求——这比我更强大:)@PCLuddite:这远远超出了我的预期。。。但它似乎只适用于0.999(重复出现)等于1这肯定是一种“其他”方式,但我不认为这是一种“更好/更简单”的方式:)@RenéVogt它从算法上提供了一些关于幕后发生的事情的见解-希望他能更有效地利用这一点。。。一定是做了很多舍入!这当然是一种“其他”的方式,但我不认为这是一种“更好/更简单”的方式:)@RenéVogt它提供了一些关于幕后算法的见解-希望他能更有效地利用这种方式。。。一定是做了很多舍入!