java 保留位数问题

2025-04-18 11:34:50
推荐回答(4个)
回答1:

还是用Java自带的类处理起来很方便, 给你做个例子吧:

import java.text.DecimalFormat;
public class Test {
public static void main(String[] args) {
double num = 0.235463;
DecimalFormat fmt = new DecimalFormat(".###%");
System.out.println(fmt.format(num));
}
}
// 显示 : 23.546%

其中".###%"中#表示有就显示, 没有就不显示, 所以3个#就是代表, 最多精确到小数点后3位, 再多出来的位会省略.

回答2:

不用那么麻烦,
直接用
double v = 0.235463 ;
v = v*1000*100;//乘以1000是保留三位,乘以100是百分比
java.util.Math.round(v);
v = v/1000;//再将v还原
String v_str = v+"%";

看看吧,java里还有一个 NumberFormat这个是转换数字格式对, 还有一个 BigDecimal这个是对分数处理对。

回答3:

import java.util.Scanner;

public class Test {
private String f;
private void input() {
System.out.println("输入小数:");
Scanner money = new Scanner(System.in);
this.f=money.nextLine();
}
public String toString(){
char[] result=new char[7];
char[] c=f.toCharArray();
result[0]=c[2];
result[1]=c[3];
result[2]='.';
for(int i=4;i result[i-1]=c[i];
}
for(int i=0;i<6;i++){
if(result[i]==0){
result[i]='0';
}
}
result[6]='%';
return String.valueOf(result);

}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Test t=new Test();
t.input();
System.out.println(t);
}

}

注意加上正确的package语句

回答4:

format();返回类型为字符串。把double格式化为字符串
string
db
=
df.format(t);