java怎么控制数字精度输出?

比如PI=3.14159265,要输出PI=3.14怎么弄DecimalFormat是什么类的啊,... 比如PI=3.14159265,要输出PI=3.14怎么弄
DecimalFormat是什么类的啊,
展开
 我来答
nizhihe
2015-07-08 · TA获得超过1637个赞
知道小有建树答主
回答量:542
采纳率:73%
帮助的人:156万
展开全部
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

*/

}
19820320x
2007-09-24 · TA获得超过565个赞
知道小有建树答主
回答量:221
采纳率:0%
帮助的人:287万
展开全部
用DecimalFormat
例如:
float pi = 3.14159265f;
String parten = "#.##";
DecimalFormat decimal = new DecimalFormat(parten);
String piStr = decimal.format(pi);

然后你再吧String 型的piStr转换成float就可以了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
温顺还悉心丶赤子1
2007-09-24 · TA获得超过219个赞
知道小有建树答主
回答量:474
采纳率:0%
帮助的人:0
展开全部
有函数round,
可以四舍无入.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式