2012-05-04 9 views
1

私はfloatをここで切り捨てています。しかし、私の値は丸められています。私はそれを望ましくありません.E.g私の値が12.989なら - 12.98のみとして出力されます。誰か助けることができます 10進形式のSetRoundingModeはJava 1.6からのみサポートされているため、使用できません。 マインは1.5 JDKです。誰かがSetRoundingMode()メソッドを使わずに私を助けますか?SetRoundingMode()を使用せずに浮動小数点値を切り捨てます。

 String pattern = "##,##0.00";   
     NumberFormat nf = NumberFormat.getNumberInstance(); 
     DecimalFormat df = (DecimalFormat)nf;  

     double fPart; 
     Float value=233.989f; 
     String dstr = String.valueOf(value); 
     dstr = dstr.substring(dstr.indexOf(".")+1); 
     Long db = Long.valueOf(dstr); 
     if(db > 0){ 
      df.applyPattern(pattern); 
      System.out.println("input="+value+", fPart="+dstr); 
     }   

     String output = df.format(value); 

    System.out.println(output); 

答えて

-1

正規表現を使用して、「。」の後ろに2番目の数字を表示できます。その文字列を最初からその位置に引いてから、その文字列をfloatまたはdoubleに変換します。

Pattern pattern = Pattern.compile("regular expression"); 
Matcher matcher = pattern.matcher("your string"); 

if(matcher.find()) 
{ 
    int poz_begin = matcher.start(); 
    int poz_end = matcher.end(); 
} 
+0

、ない正規表現のために働く小数点区切り文字です。 – unbeli

0

私があなたを理解していれば、問題は間違いです。あなたが上下に丸めたりせずに切り捨てしたい場合しかし、あなたは、あなたが常に古い学校のトリックを使用することができるだけで DecimalFormat df = new DecimalFormat("##.##"); df.format(12.912385);

+0

それは四捨五入されます。いくつかのdiff値を試してください – Azfar

+0

うん..古い学校のトリックは良いです.. –

2

ように使用nは10 ^を掛け、切り捨て、10^n個割ることができます。

float x = 233.989f; 
x = (float)(Math.floor(x * 100)/100); 

MathContext mc = new MathContext(5, RoundingMode.FLOOR) 
BigDecimal decimal = new BigDecimal(233.989, mc); 
System.out.println(decimal); 

それは仕事をしていませんが、あなたは数字の合計数を指定する必要があります。

は私ものBigDecimalを試してきました。あなたはちょうど私が小数点以下2桁を望んでいると言うことはできませんし、小数点以下の桁は気にしません。つまり、MathContextの最初のパラメータは2ではなく5です。この方法を選択した場合は、Math.Ceil(Math.log10(x))で10進数以外の数字をすばやく計算できます。

注:

  • (最初のアプローチ)オペランドの少なくとも一方が浮動小数点なければなりません(floatまたはdouble)を分割し
  • 文字列(もしコード)、それがいることを推測することは安全ではありませんでの作業'。' Math.floorと
  • 切り捨て、小数点以下は正の値のみ
  • のNOEの
+0

BigDecimal方法は良いです。 +1 – unbeli

+0

数字が入っていることが分かっているときだけ良いです。 – Azfar

+0

数字を知りませんが、パターンを達成したい場合はどうすればいいですか? – Azfar

関連する問題