Java随机数介于0和0.06之间

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

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

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

然而,这样做给了我很长的数字,如0.0070440135891302050.03656588431980957 ,我不认为这是我的导师正在寻找的。

反正有没有生成0到0.06之间只有两位或三位小数的随机数?

你可以这样做,如果你想要你的数字范围在[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 to max+1]生成数字

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

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

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

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

我假设您需要精度为0.001 ,所以试试这个:

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

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

既然您正在处理销售税,您应该知道为什么不使用Double或Float来代表货币? 并使用BigDecimal处理货币

要生成具有范围和有效数字约束的随机BigDecimal ,请参阅如何在Java中创建随机BigDecimal?