怎么得到这样的小数 我用的是如下方法: (double)(Math.round(Double.parseDouble(s1)*100/Double.parseDouble(s2)))/100有什么更好的办法,欢迎大家交流! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不好意思,上面有一点疏忽,完整的方法应该是:Double.toString((double)(Math.round(100*Double.parseDouble(s1)/Double.parseDouble(s2)))/100) Java里有一个专门格式化数据的类:java.text.NumberFormat double d = 5.24676;DecimalFormat df = new DecimalFormat("##########.0#");String s = df.format(d);System.out.println(s); double tempresult = Double.parseDouble(s1)/Double.parseDouble(s2);java.text.NumberFormat nf =java.text.NumberFormat.getNumberInstance();nf.setMaximumFractionDigits(2);nf.setMinimumFractionDigits(2);String result = nf.format(tempresult); String s1 = "111";String s2 = "22";System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));试一下!^_^ String s1 = "111";String s2 = "22";System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4)); String s1 = "111";String s2 = "22";System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4)); 哦!忘了,再把我的结果转换成String! to: tolimit(求学) 高!!!真高!!!!!! to:samwong(getMoneyPro.class)这可是标准的四舍五入的算法呀!网上的BBS分页什么都是用这种算发的呀! 去下载我的软件fitLine,(csdn中搜索可得),其中我制作了一个类用来实现(java实现)四舍五入,四舍六入五成双,首位9(或者8)看作两位有效数字等功能的方法,和你要求的接口一致,软件的帮助文档中恰好提供了这个源码。只可惜我现在不在宿舍,机子不在手边,否则就直接将源码贴出来了,呵呵。 直接用BigDecimal就行了,就和上边说的一样 首先将原始结果转换成string然后找到小数点的位置然后取substring DecimalFormat dt = new DecimalFormat("0.00"); double tmpDouble,tmpDouble1,tmpDouble2;tmpDouble1=Double.parseDouble(s1);tmpDouble2=Double.parseDouble(s2); tmpDouble=tmpDouble1/tmpDouble2;String resulStr;resulStr=dt.format(tmpDouble);在前面import java.text.*. /** * @param double f: the specified double * @param short i: precision */ public double round(double f, short i) { double dtmp = 0.00; long ltmp = 0, ltmp2 = 0; if (i == 0) { ltmp = Math.round(f); dtmp = (double)ltmp; }else{ ltmp = 1; for (int j = 1; j <= i; j++) { ltmp = 10 * ltmp; } dtmp = f * ltmp; ltmp2 = Math.round(dtmp); dtmp = (double)ltmp2/(double)ltmp; } return dtmp; } java中的除法和乘法对于最后的结果是什么样的值取决于运算中的第一个数,如果2.0*100 结果是200.0 而 2*100.0 结果是200出发也是这样,所以(double)(Math.round(Double.parseDouble(s1)*100/Double.parseDouble(s2)))/100这个方法可以 用BigDecimal应该是最正确的方法。去试试吧 http://www.angelfire.com/tx4/cus/notes/javatext.html java输出4位网站验证码, 在线等 【新手】想问下这个socket的简单对话的编写出错在哪个地方 foreach 在jdk1.6 中的使用 不声明类也可以? 请教一个程序自动下载更新的问题 非常简单的多线程问题,不过实在想不出来希望大家帮忙 如何保存Canvas对象上的图像至jpg文件 JDK1.5版本取消了javac 命令吗???那怎么编译文件啊? socket连接的服务器端怎么控制Client的IP地址? java能不能编写单独运行的程序? *.jar文件怎么执行? 各位大侠,帮我看看为什么代码执行错误!!!
Double.toString((double)(Math.round(100*Double.parseDouble(s1)/Double.parseDouble(s2)))/100)
DecimalFormat df = new DecimalFormat("##########.0#");
String s = df.format(d);
System.out.println(s);
java.text.NumberFormat nf =java.text.NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
String result = nf.format(tempresult);
String s2 = "22";
System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));试一下!^_^
String s2 = "22";
System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));
String s2 = "22";
System.out.println(new java.math.BigDecimal(new Double(s1).doubleValue() / new Double(s2).doubleValue()).setScale(2, 4));
高!!!
真高!!!!!!
网上的BBS分页什么都是用这种算发的呀!
然后找到小数点的位置
然后取substring
tmpDouble1=Double.parseDouble(s1);
tmpDouble2=Double.parseDouble(s2);
tmpDouble=tmpDouble1/tmpDouble2;
String resulStr;
resulStr=dt.format(tmpDouble);在前面import java.text.*.
* @param double f: the specified double
* @param short i: precision
*/
public double round(double f, short i) { double dtmp = 0.00;
long ltmp = 0, ltmp2 = 0; if (i == 0) { ltmp = Math.round(f);
dtmp = (double)ltmp;
}else{ ltmp = 1;
for (int j = 1; j <= i; j++) { ltmp = 10 * ltmp;
}
dtmp = f * ltmp;
ltmp2 = Math.round(dtmp);
dtmp = (double)ltmp2/(double)ltmp;
}
return dtmp;
}
(double)(Math.round(Double.parseDouble(s1)*100/Double.parseDouble(s2)))/100这个方法可以