当前位置: 首页 > 知识库问答 >
问题:

在 c 中向下舍入到小数点后 2 位#

浦毅
2023-03-14

如何将两个小数相乘并将结果四舍五入到小数点后两位?

例如,如果方程为41.75 x 0.1,结果将为4.175。如果我在c#中使用小数进行计算,它将自动向上舍入到4.18。我希望向下舍入到4.17。

我试着用数学。但刚好四舍五入到4.00。这里有一个例子:

Math.Floor (41.75 * 0.1);

共有3个答案

姬浩渺
2023-03-14
匿名用户

截至<代码>。NET Core 3.0和即将推出的< code >。NET Framework 5.0以下内容有效

Math.Round(41.75 * 0.1, 2, MidpointRounding.ToZero)

徐景明
2023-03-14
public double RoundDown(double number, int decimalPlaces)
{
     return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces);
}
越学义
2023-03-14

Math.

两种中点舍入模式为:

    < li>AwayFromZero -当一个数字位于两个数字的中间时,它会向远离零的最近的数字舍入。(又名,取整) < li >偶数-当一个数位于两个数的中间时,它会向最接近的偶数舍入。(更喜欢. 16而不是. 17,更喜欢. 18而不是. 17)

您要使用的是带有一些乘法的<code>Floor</code>。

var output = Math.Floor((41.75 * 0.1) * 100) / 100;

输出变量现在应该有4.17。

事实上,你也可以编写一个函数来获取可变长度:

public decimal RoundDown(decimal i, double decimalPlaces)
{
   var power = Convert.ToDecimal(Math.Pow(10, decimalPlaces));
   return Math.Floor(i * power) / power;
}

 类似资料:
  • 问题内容: 我已经阅读了很多stackoverflow问题,但似乎没有一个对我有用。我正在四舍五入。这是代码: 我得到的输出是:但我希望它是。我读到添加会有所帮助,但是如你所见,我没有设法使其工作。 输入和输出都必须是双倍是绝对必要的。 如果你更改上面代码的第4行并将其发布,那将是非常有用的帮助。 问题答案: 输出是 或如@Rufein所说 这也会为你做。

  • 问题内容: 每次我想四舍五入到小数点后两位小数时,它都不想四舍五入…我怎么能将它四舍五入到小数点后两位零,那会给我92.00而不是92? 给我 但我想要 我使用了TO_CHAR,它起作用了 谢谢你们! 问题答案: 您可以尝试使用TO_CHAR函数来转换结果 例如 希望能帮助到你

  • 问题内容: 我需要四舍五入,它应该是两位小数。 尝试了以下内容 28.27 但是期望值仅为28.26。 问题答案: 似乎您需要:

  • 我在C#中尝试了这一点,结果是正确的。

  • 获取以下数字集--> 当相加时,这些给出一个整数。

  • 我想把一个数字四舍五入到小数点后2位,但也保留后面的2个零,例如425.1382到425.1400,我在下面的例子中尝试过,但它似乎不起作用 或