C#:随机变量的四舍五入小数



我得到了这个(C#(:

Random RNG = new Random();
decimal divab50 = RNG.Next(50,100);
decimal divbl50 = RNG.Next(6,50);
decimal decreturn = divab50 / divbl50;
Console.WriteLine(decreturn);

如何将递减var四舍五入到两位小数?我试过Math.Round和String.Format,它们似乎不适用于RNG中生成的变量。我想。我是c#的新手,刚开始

如果您使用变量decreturn并执行Math.Round(decreturn, 2)String.Format("{0:F2}", decreturn),它将按预期工作。

以下示例正在工作:

using System;
public class Program
{
public static void Main()
{
Random RNG = new Random();
decimal divab50 = RNG.Next(50,100);
decimal divbl50 = RNG.Next(6,50);
decimal decreturn = divab50 / divbl50;
decimal rounded = Math.Round(decreturn, 2);
Console.WriteLine(rounded);
}
}

Math.Round测试:https://dotnetfiddle.net/70LTrm

您也可以将String.Format应用于此目的,如下所示:

using System;
public class Program
{
public static void Main()
{
Random RNG = new Random();
decimal divab50 = RNG.Next(50,100);
decimal divbl50 = RNG.Next(6,50);
decimal decreturn = divab50 / divbl50;
var rounded = String.Format("{0:F2}", decreturn);
Console.WriteLine(rounded);
}
}

String.Format测试:https://dotnetfiddle.net/6Yy8uU

查看Math.RoundString.Format的文档以了解更多信息。

感谢大家的回答。

对我有效的是将"{0:F2}"添加到WriteLine方法中,如下所示:

Random RNG = new Random();
decimal divab50 = RNG.Next(50,100);
decimal divbl50 = RNG.Next(6,50);
decimal decreturn = divab50 / divbl50;
Console.WriteLine("{0:F2}",decreturn);

这也起到了作用。我第一次做得不对。

decimal rounded = Math.Round(decreturn, 2);
Console.WriteLine(rounded);

谢谢大家

根据需要使用Math.Round或适当的格式说明符

  • Math.Round

将双精度浮点值舍入为指定数字小数位数,并将中点值四舍五入到最接近的偶数数字

  • 不动点("F"(格式说明符

定点("F"(格式说明符将数字转换为字符串形式为CCD_ 11,其中每个CCD_。这个如果数字为负数,字符串以减号开头。

精度说明符指示所需的小数位数地方。如果省略了精度说明符,则当前NumberFormatInfo.NumberDecimalDigits属性提供数字精确

// this should be a static or an instance field
Random RNG = new Random();
// inside a method
decimal divab50 = RNG.Next(50,100);
decimal divbl50 = RNG.Next(6,50);
decimal decreturn = divab50 / divbl50;
Console.WriteLine(Math.Round(decreturn,2));
Console.WriteLine($"{decreturn:F2}");   

示例输出

3.42
3.42

在线演示

注意:每次需要随机数时创建一个新的Random实例会导致问题。最好将其用作static字段或实例成员

最新更新