Java随机数介于0和0.06之间

时间:2013-04-11 04:34:46

标签: java random

在Java中,我需要在00.06之间随机生成一个数字。

我在这里看到另一个问题,下面的代码可以解决这个问题:

Random generator = new Random();
double number = generator.nextDouble() * .06;

然而,这样做给了我很长的数字,如0.0070440135891302050.03656588431980957,我认为这不是我的导师所期待的。

无论如何产生0到0.06之间只有两位或三位小数的随机数?

4 个答案:

答案 0 :(得分:6)

你可以这样做,如果你想要你的数字范围在[0; 0.06]和差异0.01之间:

Random generator = new Random();
int number = generator.nextInt(7);
double result = number / 100.0;

您可以推广公式number = generator.nextInt(max + 1 -min) + min;,其中max将是您生成的最大数字,最小值为min。这将从[min to max+1]

生成数字

要增加小数位,您只需将数字除以1000,10000等等。

答案 1 :(得分:4)

在内部,Java double值是二进制浮点表示。他们没有小数位。您可以格式化一个double作为具有指定小数位数的基数为10的数字字符串。例如,要获得三位小数(精度为0.001),您可以使用:

String formatted = String.format("%.3f", number);

如果您不需要对数字进行任何计算,并且您需要两个或三个小数位,则只需打印0.0,然后打印00到60(包括)之间的两位数随机整数。

答案 2 :(得分:3)

我认为你需要精确度 0.001 ,所以试试这个:

    Random r = new Random();
    int ret = r.nextInt(60 + 1);
    return ret / 1000.0;

这将产生[0,0.060] 平均,差异倍数为0.001,这可能是您想要的

答案 3 :(得分:1)

由于您正在处理销售税,因此您应该了解Why not use Double or Float to represent currency?Using BigDecimal to work with currencies

要生成包含范围和有效数字的约束的随机BigDecimal,请参阅How can I create a random BigDecimal in Java?

相关问题