教训:在做格式化带小数点的数字时,用了这个DecimalFormat,然后后续的处理中判断这个小数就用“.”来判断,例如
import java.text.DecimalFormat;
import java.util.StringTokenizer;
public class parseString
{
/**
* 解析字符串为字符数组,oldString是原始字符串,tokenString是分隔符
* */
public static String[] parseStr(String oldString,String tokenString)
{
if(oldString == null)
{
System.out.println("the String is null");
}
if(tokenString == null)
{
String rtStr[] = new String[1];
rtStr[0] = oldString;
return rtStr;
}
StringTokenizer aa = new StringTokenizer(oldString,tokenString);
int count = aa.countTokens();
String rtString[] = new String[count];
for(int i =0;i<count;i++)
{
rtString[i] = aa.nextToken();
}
return rtString;
}
private static String doubleToStr(double value)
{
DecimalFormat df = new DecimalFormat("0.0000000");
return df.format(value);
}
public static void main(String[] args){
double a = 180.000000092;
String[] strVal = parseStr(doubleToStr(((Double)a).doubleValue()),".");
for(int i=0; i<strVal.length ;i++){
System.out.println(strVal[i]);
}
}
}
其中方法doubleToStr中用了DecimalFormat格式化小数,这个DecimalFormat在中英文环境下的结果是“xxx.xxxx”,但是在别的语言环境下,如俄文环境下它就变成“xxx,xxxx”,所以务必考虑到这种情况!
把return df.format(value);换成 return df.format(value).replace(",", ".");可解决这个问题。