生成具有特定6位十进制的随机双精度

时间:2016-11-26 12:29:47

标签: java random double

我想创建一个具有6位十进制数字的随机双精度,但这段代码总是这样做:/这段代码的问题在哪里?

double random = Double.parseDouble(String.format("%.6f", new Random().nextDouble())); 
            double SP = 0.0 + (random * (7.0 - 0.0)); 

这是此代码生成的随机数10次:

  • 6.321637
  • 6.971019999999996
  • 0.763686
  • 0.14724500000000001
  • 0.240456
  • 3.268468
  • 2.112775
  • 2.5137419999999997
  • 4.637668
  • 4.712155

以下是@javaguy回答的完整代码和更正。 现在它可以工作:(但注意改变' StartNumber'以及' EndNumber'像这样:2.5)

import java.util.Random;
double random = new Random().nextDouble(); 
double N = SartNumber + (random * (EndNumber - StartNumber)); 
N = Double.parseDouble(String.format("%.6f", N)); //N Is Your Number

1 个答案:

答案 0 :(得分:1)

格式化后,您将与double相乘,因此您丢失了之前的格式,因此请在完成所有计算后,更改下面显示的代码,如下所示:

double random = new Random().nextDouble(); 
double SP = 0.0 + (random * (7.0 - 0.0)); 
SP = Double.parseDouble(String.format("%.6f", SP)); //now do format