当前位置: 技术问答>java相关
GG,DD们帮帮忙吧!!
来源: 互联网 发布时间:2015-09-15
本文导语: 我现在遇到两个问题: 1.几个double型的数值相加会出现以下的异常情况如:19.6+19.6+19.6=58.8000000004 为什么会这样呢?怎么样才能让结果正确,,或者各式化显示这个结果.(只用double) 2.年月是string型的,但我要取得前一个月的年...
我现在遇到两个问题:
1.几个double型的数值相加会出现以下的异常情况如:19.6+19.6+19.6=58.8000000004
为什么会这样呢?怎么样才能让结果正确,,或者各式化显示这个结果.(只用double)
2.年月是string型的,但我要取得前一个月的年月值,怎么取得呀????????
如年月="200209",但是要取得"200208"的值
谢谢了....以上100是小妹给的微薄表示,,如果能解决还可以再俸上100分
1.几个double型的数值相加会出现以下的异常情况如:19.6+19.6+19.6=58.8000000004
为什么会这样呢?怎么样才能让结果正确,,或者各式化显示这个结果.(只用double)
2.年月是string型的,但我要取得前一个月的年月值,怎么取得呀????????
如年月="200209",但是要取得"200208"的值
谢谢了....以上100是小妹给的微薄表示,,如果能解决还可以再俸上100分
|
double s = 19.6;
double ss = s+s+s;
double sss = new Double(ss).doubleValue();
long ssss =new Double(ss).longValue();
float sssss = new Double(ss).floatValue();
System.out.println(ss);
System.out.println(sss);
System.out.println(ssss);
System.out.println(sssss);
以下是输出结果,你应该用float类型来转换吧。
58.800000000000004
58.800000000000004
58
58.8
double ss = s+s+s;
double sss = new Double(ss).doubleValue();
long ssss =new Double(ss).longValue();
float sssss = new Double(ss).floatValue();
System.out.println(ss);
System.out.println(sss);
System.out.println(ssss);
System.out.println(sssss);
以下是输出结果,你应该用float类型来转换吧。
58.800000000000004
58.800000000000004
58
58.8
|
1。 n你可以确定一个最大精度啊。然后忽略精度后的字符
2。
import java.util.*;
import java.text.*;
private String getPrevMonth(String month ) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
try{
Calendar c = format.getCalendar();
c.setTime(format.parse(month));
c.add(Calendar.MONTH,-1);
return format.format(c.getTime());
}catch(Exception e) {}
return "";
}
2。
import java.util.*;
import java.text.*;
private String getPrevMonth(String month ) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
try{
Calendar c = format.getCalendar();
c.setTime(format.parse(month));
c.add(Calendar.MONTH,-1);
return format.format(c.getTime());
}catch(Exception e) {}
return "";
}
|
1.將最後的結果強制類型轉換 (double)x;
2.那就String.valueOf(Integer.paserInt("200209")-1);要判斷特殊情況,比如月份是1的時候,還要捕捉異常
2.那就String.valueOf(Integer.paserInt("200209")-1);要判斷特殊情況,比如月份是1的時候,還要捕捉異常
|
如果不是标准时间格式,就用string和int之间的转化,转化成int后进行运算,然后再转回string (如果有必要)
|
因为月份是按0~11来算的,所以会是这样,你只能将月份取出来加一来实现。
|
看看BigDecimal和DateFormat或者SimpleDateFormat。
|
可以把字符型日起转化成日期型不就得了,运算完再转化回来
|
看看BigDecimal和DateFromat(或者SimpleDateFormat)。