7

像这样的东西:

1234.5678
2345.6789
3456.7890

但不是:

123.4567

现在我这样做:

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

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

有什么巧妙的技巧可以做到这一点?

4

8 回答 8

8

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

编辑:添加了更多的 9

EDIT2:修复了 1 减问题

EDIT3:添加了更多的 0,我的答案是如何获得如此多的支持的?

于 2012-04-19T19:09:37.247 回答
3

使用其中之一:

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;
于 2012-04-19T19:09:03.783 回答
2

像这样的东西?

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

每个支出者的评论如下......关于你为什么我在这里使用小数的解释:

  1. Jon Skeet 在俄亥俄州 Codemash 的一次演讲中公开羞辱了我们中的许多人,因为他选择了 double。
  2. 时髦人士使用双打,并且
  3. Decimal 将防止使用 double 引入的精度问题。请记住,当您在点后面需要很多数字时,您应该使用双精度数。如果您需要较少,但需要它们保持准确性,请使用小数。
于 2012-04-19T19:11:52.473 回答
1

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

于 2012-04-19T19:08:31.150 回答
1
double number = random.Next(1000 * 1000, 1000 * 1000 * 10) / 1000.0
于 2012-04-19T19:09:07.513 回答
1
double rndNumber = new Random().NextDouble(); 
string testNumber = (rndNumber * 99999999).ToString("0000.0000"); 
于 2012-04-19T19:10:37.547 回答
1
Random rnd = new Random();
int num1 = rnd.Next(1000,9999);
int num2 = rnd.Next(1000,9999);
Console.WriteLine(num1.ToString()+"."+num2.ToString());
于 2012-04-19T19:14:12.607 回答
0
double number = Double.Parse(r.Next(10000000, 99999999).ToString().Insert(4,"."));
于 2012-04-19T19:13:55.650 回答