private void initview() {
etSf.setText(5148650+"");
str = etSf.getText().toString().trim();
if (str.length() >= 4){
int safeNumber = safeChageInt(str,0);
double cf = div(safeNumber,1000,1);
tvSf.setText(cf+"km");
}else{
tvSf.setText(str+"米");
}
}
/**
* 字符串安全轉化爲int
*
* @param in 初始數據
* @param safeNumber 如果出現異常 顯示的默認的數據
* @return
*/
public static int safeChageInt(String in, int safeNumber) {
if (TextUtils.isEmpty(in)) {
return safeNumber;
}
int parseDouble = 0;
try {
parseDouble = Integer.parseInt(in);
} catch (NumberFormatException e) {
return safeNumber;
}
return parseDouble;
}
/**
* 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指
* 定精度,以後的數字四捨五入。
*
* @param v1 被除數
* @param v2 除數
* @param scale 表示表示需要精確到小數點以後幾位。
* @return 兩個參數的商
*/
public static double div(double v1, double v2, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 字符串安全轉化爲Double
*
* @param dou 初始數據
* @param safeNumber 如果出現異常 顯示的默認的數據
* @return
*/
public static double safeChageDouble(String dou, double safeNumber) {
if (TextUtils.isEmpty(dou)) {
return safeNumber;
}
double parseDouble = 0.0;
try {
parseDouble = Double.parseDouble(dou);
} catch (NumberFormatException e) {
return safeNumber;
}
return parseDouble;
}