簡體   English   中英

如何在C#中生成一個總共8位數的隨機數? (4個整數,4個小數部分)

[英]How to generate a random number with 8 digits total in C#? (4 integer, 4 fractional part)

像這樣的東西:

1234.5678
2345.6789
3456.7890

但不是:

123.4567

現在我這樣做:

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

但這並不總是給我8位數。

有什么聰明的技巧嗎?

嘗試random.Next(10000000, 99999999+1) / 10000.0d;

編輯:增加了9s

EDIT2:修正了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. Decimal將防止使用double引入的精度問題。 請記住,當您需要點后的大量數字時,您應該使用double。 如果您需要更少,但需要它們保持准確性,請使用小數。

生成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,"."));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM