Java随机数介于0和0.06之间
在Java中,我需要随机生成0
到0.06
之间的数字。
我在这里看到另一个问题,下面的代码可以解决这个问题:
Random generator = new Random(); double number = generator.nextDouble() * .06;
然而,这样做给了我很长的数字,如0.007044013589130205
和0.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?