Java编程运算中如何使数精确到小数点后三位.
publicclassHalo{publicstaticvoidmain(String[]agrs){doublex=6.4,y=3.22;System.out.prin...
public class Halo{public static void main(String[] agrs){double x=6.4,y=3.22;System.out.println("x-y="+(x-y));System.out.println("x+y="+(x+y));System.out.println("x*y="+(x * y));}}我编写的程序是这样的, 但x*y 的时候 输出的结果是20.608000000000004 如果使那000000000000000004去掉呢?
展开
若以下回答无法解决问题,邀请你更新回答
4个回答
展开全部
建议高精度换算的时候使用BigDecimal类型:
特别是刚做银行相关项目的时候,都要在换算的时候讲double的值转换为BigDecimal类型,然后在保存为double类型,因为double在换算时可能会丢失精度。
将double转换为BigDecimal:
double p1 = 0d;
BigDecimal big1 = new BigDecimal(p1);-->再用big1去运算。
将BigDecimal转换为double:
String douStr = df.format(big1);
//先将其转换为String型(避免在将BigDecimal转换为double时丢精度)
double dou = Double.parseDouble(douStr);
特别是刚做银行相关项目的时候,都要在换算的时候讲double的值转换为BigDecimal类型,然后在保存为double类型,因为double在换算时可能会丢失精度。
将double转换为BigDecimal:
double p1 = 0d;
BigDecimal big1 = new BigDecimal(p1);-->再用big1去运算。
将BigDecimal转换为double:
String douStr = df.format(big1);
//先将其转换为String型(避免在将BigDecimal转换为double时丢精度)
double dou = Double.parseDouble(douStr);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java中提供了很多方法可以设置浮点数的精确度,我介绍两种方法:DecimalFormat和BigDecimal.
假设你的数为Double value = 1.2365456321;
如果用DecimalFormat,则
DecimalFormat decimalFormat = new DecimalFormat(".000");
value = Double.parseDouble(decimalFormat.format(value));
如果用BigDecimal,则
BigDecimal bigDecimal = new BigDecimal(value);
value = bigDecimal.setScale(3).doubleValue();
如果对数据要求的比较精确的话,推荐用BigDecimal,因为它被开发出来就是为了满足数据精确性的要求。
假设你的数为Double value = 1.2365456321;
如果用DecimalFormat,则
DecimalFormat decimalFormat = new DecimalFormat(".000");
value = Double.parseDouble(decimalFormat.format(value));
如果用BigDecimal,则
BigDecimal bigDecimal = new BigDecimal(value);
value = bigDecimal.setScale(3).doubleValue();
如果对数据要求的比较精确的话,推荐用BigDecimal,因为它被开发出来就是为了满足数据精确性的要求。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Math.round(x*1000)/1000
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
java API,要多看才行啊,有好多方法,不喜欢API一定要和google大叔搞好关系,常去看看老人家,他有好多的答案告诉你
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询