java中怎么获取保留小数点后两位,不进行四舍五入,不用截取的方式,我截取了,但由于长度问题总是报错
展开全部
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转成字符串类型,然后截取,一般没什么错误的。。。。
而现在则没有了。如下代码你可以参考下:
double num=23.1415926;
String temp=Double.toString(num);
double newNum=Double.parseDouble(temp.substring(0,temp.indexOf('.')+3));
先把num转成字符串类型,然后截取,一般没什么错误的。。。。
追问
如果数组的长度没有这么多,就不行了,如:num=22.0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下边是你想要的程序,是按照你说截取做的,你既然用截取做了,报错是你程序有漏洞,长度没找对,你应该试着去调试的程序找出错误这样对你很有帮助,而且进步很快的。你看看这个吧。
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);
}
}
}
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位数。可以任意小数取得后俩位呵呵。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
DecimalFormat df = new DecimalFormat("0.00");
double d = 123.9078;
String db = df.format(d);
System.out.println(db);
这个行不
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();
}
}
这么写可以不
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个简单的方式还是截取,你截取的时候做好长度判断,肯定能成功的。
追问
我没有做判断了但是我在后面添加了+“000”,嘻嘻
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
连个悬赏分都没有么????你给50悬赏分,我立刻给你一个200%好用、可用、无bug的给你,附带样例测试。顺便一提,楼上的都不行,他们的都有bug,而且都是四舍五入型的,不满足你的需求
1楼:太复杂
3楼:四舍五入了
4楼:最明显的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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询