有朋友在群里問了這個問題,印象中Java沒有這方面的函數(shù)(百分?jǐn)?shù)轉(zhuǎn)換為小數(shù)倒是有一個),而且直接乘以100會得出類似2.5999999999的結(jié)果,在網(wǎng)上也沒有搜到類似的解決方案,所以把我們的討論結(jié)果發(fā)上來,肯定不是最優(yōu)解,也希望來訪者留下你們的解決辦法,只要能優(yōu)化其中的某一段就可以!

          private?String?convert(String?orignal)
          {
          ????
          //去掉小數(shù)后面的零值,如:0.02500
          ????String?noDotInteger?=?Integer.parseInt????(str.replace('.',''))?+?"";//2500
          ????int?lengthOfZero?=?noDotInteger.length()?-?noDotInteger.indexOf("0");//2
          ????str?=?str.substring(0,?str.length()?-?lengthOfZero);//0.025?

          ????
          //轉(zhuǎn)換成百分?jǐn)?shù)字符串
          ????int?index?=?orignal.indexOf('.');
          ????
          if(index?<?orignal.length()?-?2)
          ????
          {
          ????
          return?orignal.substring(0,index)?+?orignal.substring(index?+?1,index?+?3)?+
          ?
          '.'?+?orignal.substring(index?+?3)?+?"%";
          ????}

          ????
          else
          ????
          {
          ???????
          return?orignal.substring(0,index)?+?orignal.substring(index?+?1)?+?"%";
          ????}

          }
          ?

          續(xù):J2ME綜合技術(shù)討論群 的劉軍提出了他的解決方案:

          import?java.math.BigDecimal;
          public?class?Hello
          {
          ????
          public?static?void?main(String?args[])
          ????
          {
          ????????String?s?
          =?"0.025";
          ????????BigDecimal?bd?
          =?new?BigDecimal(s);
          ????????System.out.println(bd.multiply(
          new?BigDecimal(100)));?//輸出2.500
          ????}

          }
          ?

          山城浪子則說用java.text.DecimalFormat最好最方便!

          版權(quán)所有 羅明
          posted on 2006-03-27 19:48 羅明 閱讀(4591) 評論(2)  編輯  收藏 所屬分類: JavaStudy
          Comments
           
          主站蜘蛛池模板: 越西县| 闽侯县| 尼勒克县| 平和县| 永和县| 陇川县| 磐石市| 缙云县| 清新县| 高雄市| 灌阳县| 日喀则市| 修武县| 正蓝旗| 博湖县| 新余市| 翼城县| 勐海县| 大荔县| 昌图县| 巴楚县| 石泉县| 广水市| 闵行区| 志丹县| 乐业县| 大名县| 巴中市| 肇州县| 大理市| 石景山区| 登封市| 延川县| 肇东市| 上高县| 永春县| 明溪县| 延津县| 绿春县| 重庆市| 阿克陶县|