当前位置:编程学习 > JAVA >>

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

追问:你给我qq号码也行哦我没有做判断了但是我在后面添加了+“000”,嘻嘻用过,由于他是有四舍五入的,所以我放弃了这种方法长度要判断如果数组的长度没有这么多,就不行了,如:num=22.0我那个解决的办法是,我在后面加了"000"这样就不怕长度不够了,但是还是要谢谢你,嘻嘻,因为我还是初级者,就请接收我的谢谢吧,谢谢了str.length()-a-1) >= 2,为什么要这样写条件呢哦,那么我怎么样给你加分呢谢谢,嘻嘻
答案:连个悬赏分都没有么????你给50悬赏分,我立刻给你一个200%好用、可用、无bug的给你,附带样例测试。顺便一提,楼上的都不行,他们的都有bug,而且都是四舍五入型的,不满足你的需求 
1楼:太复杂
3楼:四舍五入了
4楼:最明显的bug,如果小数只有一位肿么办?
其他:http://bbs.tech.ccidnet.com/read.php?tid=262956 这个简单的方式还是截取,你截取的时候做好长度判断,肯定能成功的。 DecimalFormat df = new DecimalFormat("0.00");
			double d = 123.9078; 
			String db = df.format(d);
			System.out.println(db);
这个行不 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转成字符串类型,然后截取,一般没什么错误的。。。。 下边是你想要的程序,是按照你说截取做的,你既然用截取做了,报错是你程序有漏洞,长度没找对,你应该试着去调试的程序找出错误这样对你很有帮助,而且进步很快的。你看看这个吧。
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);
		}
	}
} 

上一个:关于java目录编译运行的问题
下一个:这Java线程问题 (解决这问题的话我还可以给你多加点分)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,