舍入数字而不是向下| C#

109*_*793 10 c#

我正在执行一些计算并将结果插入数据库.

我的问题是,我得到的答案似乎是四舍五入而不是向上.这似乎并不重要,但在大量销售过程中,美分开始加起来!!

          Decimal pubCut = rrp * (percentageCutD / 100);
          Decimal retCut = rrp * retailerCut;
          Decimal edcut = rrp * edpercentage;
Run Code Online (Sandbox Code Playgroud)

老实说,我对数字很垃圾,整个数学函数都是我在大学里试图避免的.任何人都可以告诉我如何才能将这些数字用于向上舍入而不是向下舍入?

Liv*_* M. 12

使用Math.Ceiling()方法.

double[] values = {7.03, 7.64, 0.12, -0.12, -7.1, -7.6};
Console.WriteLine("  Value          Ceiling          Floor\n");
foreach (double value in values)
   Console.WriteLine("{0,7} {1,16} {2,14}", 
                     value, Math.Ceiling(value), Math.Floor(value));
// The example displays the following output to the console:
//         Value          Ceiling          Floor
//       
//          7.03                8              7
//          7.64                8              7
//          0.12                1              0
//         -0.12                0             -1
//          -7.1               -7             -8
//          -7.6               -7             -8
Run Code Online (Sandbox Code Playgroud)


Øyv*_*hen 5

你的问题是这个

(percentageCutD / 100)
Run Code Online (Sandbox Code Playgroud)

由于100是一个int,它将执行整数除法,因此150/100变为1.你可以通过确保100是小数来解决这个问题,因为你最后想要一个小数作为结果.将您的代码更改为.

(percentageCutD / 100D)
Run Code Online (Sandbox Code Playgroud)

但是,如果您总是希望将值尽可能地舍入为1.1到2,那么您将不得不使用它Math.Ceiling来实现此目的.如果你出于某种原因想要避免使用Math该类(我不明白为什么要这样做,你可以在结果中添加1并将其转换int为有效地舍入到最接近的整数.