Java随机生成两位十进制格式的价格

超fkcb

我想使用 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 等值。无论如何要格式化它吗?

Am_I_Helpful

正如我在评论中所述,通过将 randomValue 结果乘以 10,然后对其应用 Math.floor(),然后最后将上一步中获得的结果相除,这很容易实现。

注意:(在评论部分,我的手指在最后输入了一个额外的 0!不过我已经删除了评论)

工作代码将是:

// use the correct pattern #0.00
DecimalFormat formatter = new DecimalFormat("#0.00");  // edited here.    
double randomValue = min + Math.random( ) * diff;
double tempRes = Math.floor(randomValue * 10);
double finalRes = tempRes/10;
System.out.println(formatter.format(finalRes));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将输出的十进制格式设置为小数点后两位?

Java:double:如何始终显示两位十进制数字

如何将html输入限制为两位十进制的正十进制数字?

带有掩码的十进制数字的后两位?

使用NumberFormat的双精度值和两位十进制

使用matlab,如何找到十进制数字的最后两位?

正则表达式两位十进制与。最后有效

在Python中交错两位十进制数字

Java String.format 两位小数,点作为千位分隔符,逗号作为十进制分隔符

如何在不更改第二位十进制(1.255 => 1.25)的情况下获得两位十进制数?

Java-根据第三个十进制值四舍五入到两位小数

根据mysql中的第三个十进制值舍入到最接近的两位十进制

在十进制后打印两位数字

将列表保存到python中带有两位十进制数字的csv中?

在角度2中,如何将数字显示为两位十进制舍入的货币?

在给定范围内生成随机的128位十进制数

Java十进制格式错误输出

Java中的双十进制格式

十进制数格式转换Java

Java十进制格式解析问题

Java 格式两位小数

十进制格式不适用于Java中的3位数字

十进制正则表达式约束匹配(可选小数点前四位,后两位)

十进制格式设置为零位

以 6 位十进制格式设置值

生成(随机)除法而不是十进制数的最佳方法

如何在MySQL中生成随机的十进制值

如何将十进制值四舍五入到小数点后两位(用于在页面上输出)

在Python中将输入格式格式化为十进制价格