Java随机生成两位小数格式的价格

标签 java random format decimalformat

<分区>

我想使用 Java 在 0 到 2.10 的范围内随机生成价格。我想要价格格式为 0.00、0.10、0.20、0.30、0.40、0.50 .... 1.10、1.20 一直到 2.10。我的代码是这样的:

private static DecimalFormat df2 = new DecimalFormat(".##");
double min = 0;
double max = 2.10;
double diff = max - min;
double randomValue = min + Math.random( ) * diff;
System.out.println(df2.format(randomValue));

但是,它打印出诸如 .06、1.0、.99、.02 等值。是否有格式化它的方法?

最佳答案

我有另一个直接的解决方案,也许它是最简单的?可以这样想:0.00,0.10,0.20 ... 2.10,其实只需要生成0(含)到22(不含)的随机整数,然后除以10,就可以用结果来格式化了.

比如你的随机数是18,那么结果就是1.8,那么你可以格式化为1.80;

Random rand = new Random();
System.out.printf("%.2f%n", rand.nextInt(22) / 10.0);

同样的逻辑,如果你想要最小差距为0.01的价格,你可以生成从0(含)到211(不含)的随机数并除以100;

处理 0 不需要其他操作。

关于Java随机生成两位小数格式的价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45272125/

相关文章:

java - MVC - 将 Controller 和模型放在同一个类中是否是一种习惯

java - 使用预定义库在 Java 中生成 4 位唯一随机数?

javascript - 如果我不知道集合的大小,我可以从集合中随机选择一个元素吗?

Python 类型错误 : not enough arguments for format string

c++ - C++中如何输出原始格式的 float ?

java - 将日期时间转换为字符串,时间错误

java - 从sql中的表中将数据从特定行获取到android studio中的textview

java - 从以逗号分隔的列表中获取字符串

string - GoLang 获取 byte slice 中第 N 行的字符串

java - 在调试器变量中显示自定义字符串