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

 我来答
vivifirst
2011-05-18 · TA获得超过837个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:225万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TimeZone85
2011-05-18 · 超过13用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:38.7万
展开全部
下边是你想要的程序,是按照你说截取做的,你既然用截取做了,报错是你程序有漏洞,长度没找对,你应该试着去调试的程序找出错误这样对你很有帮助,而且进步很快的。你看看这个吧。
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位数。可以任意小数取得后俩位呵呵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wzjlovemjx
2011-05-18 · TA获得超过6528个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:767万
展开全部
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();
}
}

这么写可以不
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Mdaimon
2011-05-18 · TA获得超过310个赞
知道答主
回答量:88
采纳率:0%
帮助的人:82.9万
展开全部
这个简单的方式还是截取,你截取的时候做好长度判断,肯定能成功的。
追问
我没有做判断了但是我在后面添加了+“000”,嘻嘻
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虎用95
2011-05-18 · TA获得超过431个赞
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:69.7万
展开全部
连个悬赏分都没有么????你给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

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式