如何在 C# 中生成总共 8 位的随机数?(4 个整数,4 个小数部分)

本文关键字:随机数 整数 小数部 | 更新日期: 2023-09-27 18:31:36

像这样:

1234.5678
2345.6789
3456.7890

但不是:

123.4567

现在我这样做:

double number = Math.Ceiling ( random.NextDouble ( ) * 10000000 ) * 0.001;

但这并不总是给我 8 位数字。

有什么聪明的技巧可以做到这一点吗?

如何在 C# 中生成总共 8 位的随机数?(4 个整数,4 个小数部分)

尝试random.Next(10000000, 99999999+1) / 10000.0d;

编辑:添加了更多9

编辑2:修复了1减号问题

编辑3:添加了更多的0,我的答案是如何获得如此多的赞成票的?

使用以下选项之一:

double number = Math.Ceiling(random.NextDouble() * 9000 * 10000 + 1000 * 10000) * 0.0001;
double number = Math.Ceiling(random.NextDouble() * 90000000 + 10000000) * 0.0001;
double number = random.Next(10000 * 10000 / 10, 10000 * 10000) / 10000d;
double number = random.Next(10000000, 100000000) / 10000d;

像这样的东西?

Random r = new Random();
var item = r.Next(10000000, 100000000) * 0.0001m;

根据下面的花费者评论...解释为什么你我在这里使用十进制:

  1. 乔恩·斯基特(Jon Skeet)公开羞辱我们中的许多人在俄亥俄州Codemash的一次演讲中选择了双倍。
  2. 双打被时髦人士使用,并且
  3. 十进制将防止因使用双精度而引入的精度问题。 请记住,当您在点后需要大量数字时,您应该使用双精度。 如果需要较少,但需要它们来保持准确性,请使用十进制。

生成 8 个随机数字,然后将它们连接在一起。

double number = random.Next(1000 * 1000, 1000 * 1000 * 10) / 1000.0
double rndNumber = new Random().NextDouble(); 
string testNumber = (rndNumber * 99999999).ToString("0000.0000"); 
Random rnd = new Random();
int num1 = rnd.Next(1000,9999);
int num2 = rnd.Next(1000,9999);
Console.WriteLine(num1.ToString()+"."+num2.ToString());
double number = Double.Parse(r.Next(10000000, 99999999).ToString().Insert(4,"."));