java中怎么获取保留小数点后两位,不进行四舍五入,不用截取的方式,我截取了,但由于长度问题总是报错

如题所述

第1个回答  2011-05-18
JDK6.0版本前有个方法System.out.printf("%.2f",3.141592)可以保留小数点后两位
而现在则没有了。如下代码你可以参考下:
double num=23.1415926;
String temp=Double.toString(num);
double newNum=Double.parseDouble(temp.substring(0,temp.indexOf('.')+3));
先把num转成字符串类型,然后截取,一般没什么错误的。。。。追问

如果数组的长度没有这么多,就不行了,如:num=22.0

第2个回答  2011-05-18
下边是你想要的程序,是按照你说截取做的,你既然用截取做了,报错是你程序有漏洞,长度没找对,你应该试着去调试的程序找出错误这样对你很有帮助,而且进步很快的。你看看这个吧。
public class sss {

public static void main(String[] args) {

double d1 = 122.2;
double d2 = 122.2323;
double d3 = 123;
test(d1);
test(d2);
test(d3);
}

public static void test(double d)
{
String str = Double.toString(d);
int a= str.indexOf(".");
if(-1 != a)
{
if((str.length()-a-1) >= 2)
{
str = str.substring(a+1,a+3);
}
else
{
str = str.substring(a+1,str.length());
}
System.out.print(str);
}
}
}追问

我那个解决的办法是,我在后面加了"000"这样就不怕长度不够了,但是还是要谢谢你,嘻嘻,因为我还是初级者,就请接收我的谢谢吧,谢谢了

追答

不客气。我那个程序已经判断你的小数位数是否超过2位数。可以任意小数取得后俩位呵呵。

追问

str.length()-a-1) >= 2,为什么要这样写条件呢

追答

判断你的小数点后边是不是有2位或以上的位数。假如str=“123.456”那么str.length()=7,index的a=3那么str.length()-a-1=3说明你小数点后有3位数,执行if中的语句,否则就else啦

追问

哦,那么我怎么样给你加分呢

追答

没事 解决就好

追问

谢谢,嘻嘻

第3个回答  2011-05-18
DecimalFormat df = new DecimalFormat("0.00");
double d = 123.9078;
String db = df.format(d);
System.out.println(db);
这个行不追问

用过,由于他是有四舍五入的,所以我放弃了这种方法

追答

import java.text.NumberFormat;

public class d {
double data;

public d(double data) {
this.data = data;
}

public void method() {
String str = String.valueOf(data);
int pos = str.lastIndexOf('.');
try {
str = str.substring(0, pos + 3);
} catch (Exception e) {
NumberFormat nbf = NumberFormat.getInstance();
nbf.setMinimumFractionDigits(2);
nbf.setMaximumFractionDigits(2);
str=nbf.format(data);
}
System.out.println(str);
}

public static void main(String args[]) {
new d(4.4).method();
}
}

这么写可以不

追问

长度要判断

追答

来给我说下例子怎么就出错了,还是没懂 是不是pos=-1?

第4个回答  2011-05-18
这个简单的方式还是截取,你截取的时候做好长度判断,肯定能成功的。追问

我没有做判断了但是我在后面添加了+“000”,嘻嘻

第5个回答  2011-05-18
连个悬赏分都没有么????你给50悬赏分,我立刻给你一个200%好用、可用、无bug的给你,附带样例测试。顺便一提,楼上的都不行,他们的都有bug,而且都是四舍五入型的,不满足你的需求
1楼:太复杂
3楼:四舍五入了
4楼:最明显的bug,如果小数只有一位肿么办?追问

你给我qq号码也行哦

追答

加点分撒。。。公司网络不允许上qq/msn。
没有50好歹也给个20分撒。楼下的bug灰常大

http://hi.baidu.com/leemax/blog/item/3d2421443f87b05b510ffecb.html

算了,直接给你吧,你可以在eclipse里面运行看看

参考资料:http://hi.baidu.com/leemax/blog/item/3d2421443f87b05b510ffecb.html

本回答被提问者采纳
相似回答