
java怎么控制数字精度输出?
比如PI=3.14159265,要输出PI=3.14怎么弄DecimalFormat是什么类的啊,...
比如PI=3.14159265,要输出PI=3.14怎么弄
DecimalFormat是什么类的啊, 展开
DecimalFormat是什么类的啊, 展开
3个回答
展开全部
public static void main(String[] args){
//double 型数据的小数点控制输出
double a=1113.141592653;
DecimalFormat formatter1=new DecimalFormat("#.000000");
System.out.println(formatter1.format(a));
//BigDecimal型数据的小数点控制输出
String b="1113.141592653";
//方法1
BigDecimal bd1=new BigDecimal(b);
DecimalFormat formatter2=new DecimalFormat("#.000000");
System.out.println(formatter2.format(bd1.doubleValue()));
//方法2, BigDecimal中的setScale方法的第一个参数就
//是我们要指定的精度位数,这里我设为6位小数,但记住,如果
//舍入后的结果后面几位小数是0,则会被省略,就是说0没被输出,详见后面的测试
BigDecimal bd2=new BigDecimal(b);
System.out.println(bd2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
//测试
System.out.println();
System.out.println("以下为测试:");
BigDecimal b0=new BigDecimal("1.00000000");
System.out.println(b0.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b1=new BigDecimal("1.00000010");
System.out.println(b1.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b2=new BigDecimal("1.00000020");
System.out.println(b2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b3=new BigDecimal("1.00000030");
System.out.println(b3.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b4=new BigDecimal("1.00000040");
System.out.println(b4.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b5=new BigDecimal("1.00000050");
System.out.println(b5.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b6=new BigDecimal("1.00000060");
System.out.println(b6.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b7=new BigDecimal("1.00000070");
System.out.println(b7.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b8=new BigDecimal("1.00000080");
System.out.println(b8.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b9=new BigDecimal("1.00000090");
System.out.println(b9.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
/*输出结果如下:
1113.141593
1113.141593
1113.141593
以下为测试:
1.0
1.0
1.0
1.0
1.0
1.000001
1.000001
1.000001
1.000001
1.000001
*/
}
//double 型数据的小数点控制输出
double a=1113.141592653;
DecimalFormat formatter1=new DecimalFormat("#.000000");
System.out.println(formatter1.format(a));
//BigDecimal型数据的小数点控制输出
String b="1113.141592653";
//方法1
BigDecimal bd1=new BigDecimal(b);
DecimalFormat formatter2=new DecimalFormat("#.000000");
System.out.println(formatter2.format(bd1.doubleValue()));
//方法2, BigDecimal中的setScale方法的第一个参数就
//是我们要指定的精度位数,这里我设为6位小数,但记住,如果
//舍入后的结果后面几位小数是0,则会被省略,就是说0没被输出,详见后面的测试
BigDecimal bd2=new BigDecimal(b);
System.out.println(bd2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
//测试
System.out.println();
System.out.println("以下为测试:");
BigDecimal b0=new BigDecimal("1.00000000");
System.out.println(b0.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b1=new BigDecimal("1.00000010");
System.out.println(b1.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b2=new BigDecimal("1.00000020");
System.out.println(b2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b3=new BigDecimal("1.00000030");
System.out.println(b3.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b4=new BigDecimal("1.00000040");
System.out.println(b4.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b5=new BigDecimal("1.00000050");
System.out.println(b5.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b6=new BigDecimal("1.00000060");
System.out.println(b6.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b7=new BigDecimal("1.00000070");
System.out.println(b7.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b8=new BigDecimal("1.00000080");
System.out.println(b8.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b9=new BigDecimal("1.00000090");
System.out.println(b9.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
/*输出结果如下:
1113.141593
1113.141593
1113.141593
以下为测试:
1.0
1.0
1.0
1.0
1.0
1.000001
1.000001
1.000001
1.000001
1.000001
*/
}
展开全部
用DecimalFormat
例如:
float pi = 3.14159265f;
String parten = "#.##";
DecimalFormat decimal = new DecimalFormat(parten);
String piStr = decimal.format(pi);
然后你再吧String 型的piStr转换成float就可以了
例如:
float pi = 3.14159265f;
String parten = "#.##";
DecimalFormat decimal = new DecimalFormat(parten);
String piStr = decimal.format(pi);
然后你再吧String 型的piStr转换成float就可以了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有函数round,
可以四舍无入.
可以四舍无入.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询