教训:切记DecimalFormat是和语言环境有关

    教训:在做格式化带小数点的数字时,用了这个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(",", ".");可解决这个问题。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值