我得到了这个(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.Round
和String.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
字段或实例成员