java中%.2f的用法
时间: 2023-10-04 11:14:14 浏览: 607
在Java中,%.2f是用来格式化浮点数的,其中%表示占位符的开始,f表示浮点数类型,.2表示保留2位小数。例如:
```java
double num = 3.1415926;
System.out.printf("%.2f", num);
```
输出结果为:3.14
在这个例子中,%.2f将会把num的值格式化成一个带有2位小数的字符串。在输出时,printf方法将会替换掉%和f之间的内容为格式化后的结果。
相关问题
优化 package com.moreTest.test04; import java.util.Random; public class MyRun04 implements Runnable { public static String[] arr = new String[3]; public MyRun04() { Random r = new Random(); /*arr[0] = String.format("%.2f", r.nextDouble(100)); arr[1] = String.format("%.2f", r.nextDouble(100 - Double.parseDouble(arr[0]))); arr[2] = String.format("%.2f",100 - Double.parseDouble(arr[0])- Double.parseDouble(arr[1]));*/ double a= r.nextInt(1,9999)/100; double b=r.nextInt(1,9999-(int)(a*100))/100.0; double c=100-a-b; arr[0]=String.format("%.2f",a); arr[1]=String.format("%.2f",b); arr[2]=String.format("%.2f",c); } public static int count = 3; @Override public void run() { while (true) { synchronized (MyRun04.class) { if (count == 0) { System.out.println(Thread.currentThread().getName() + "没有抢到"); break; } else { count--; System.out.println(Thread.currentThread().getName() + "抢到了" + arr[count] + "元"); break; } } } } }
这段代码是一个简单的多线程随机抢红包的程序。其中,MyRun04类实现了Runnable接口,代表一个线程的运行逻辑。在MyRun04的构造函数中,使用Random类生成三个随机数,并将其格式化为两位小数。在run方法中,使用synchronized关键字来同步多个线程对count变量的访问,保证count的值只会被一个线程修改。每个线程在抢到红包时,会从arr数组中取出一个元素,并打印出抢到的红包金额。
这段代码的优化主要在于生成随机数的方式。原先的代码使用了String.format方法来保留两位小数,但这种方式比较繁琐,也不够高效。优化后的代码使用了Random类的nextInt方法来生成随机整数,然后再将其转换为随机的小数。这种方式更加简单明了,也更加高效。
另外,原先的代码中使用了一个静态变量count来表示剩余的红包数量,这种方式不够安全,容易出现并发问题。优化后的代码使用了synchronized关键字来同步对count变量的访问,避免了并发问题。
%.2f用java怎么写
在Java中,`%.2f` 是一个格式控制字符串,用于`String.format()` 方法或`DecimalFormat` 类来保留两位小数。以下是两个示例:
1. 使用 `String.format()` 方法[^1]:
```java
double a = 3.1415926;
System.out.println("保留两位小数: " + String.format("%.2f", a)); // 输出: 3.14
```
这里,`.2f` 表示要保留两位小数。
2. 使用 `DecimalFormat` 类:
```java
import java.text.DecimalFormat;
double a = 3.1415926;
DecimalFormat df = new DecimalFormat("#.##");
String formattedA = df.format(a);
System.out.println("保留两位小数: " + formattedA); // 输出: 3.14
```
`#` 是占位符,`.` 后跟数字指定小数位数。在这个例子中,`.##` 指定了最多两位小数,但会根据实际数值自动决定显示几位。
阅读全文