2012-05-05 2 views
2

小数点以下の値にもかかわらず、数値を丸めようとしています。目的は、小数点を新しい値として分離するために、丸められた数値を完全な数値から減算することです。ダブルダウンの丸め(前回の計算結果が<.5の場合でも)

DecimalFormat decfom = new DecimalFormat("#.##"); 
String splitter1 = decfom.format(newdecihole); 

DecimalFormat df = new DecimalFormat("##."); 
String splitter2 = df.format(newdecihole); 
double split1 = Double.parseDouble(splitter1); 
double split2 = Double.parseDouble(splitter2); 

double splitdeci = split1 - split2; 
double finfracti = splitdeci * 8; 

私が何をしようとしているのは、結果を整数と8番に変換することです。すべてのIVEがうまくいきました。結果が下がる代わりに切り上げられます(splitdeciに負の値が与えられます)。

アイブ氏は分割2にint型を作ってみましたが、それはちょうど

+0

問題を示して短いが*完全*プログラムをご提示ください。現時点で何が間違っているのかを正確に伝えるのは難しいです。 –

+0

Math.floor()を使用してみませんか? double deci = Math.floor(value); double frac = value - deci; – Renard

+0

私は以前の計算を別のdoubleに複写し、その文の中でmath.floorを持つ必要がありました。flooddeci = Math.floor(totalspriyard/convertno); - –

答えて

4

それを切り上げ、あなたは

Math.floor 

をお探しですか?

http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html#floor(double

+0

私のフロアはまだ私に同じ結果を与えている。 calcの出力は3.58で、splの出力は4.0と誤って使用しています。それはうまくいくはずです。 double spl = Math.floor(split2); \t \t \t \t \t double splitDecimal = split1-spl; –

+0

前回の計算を別の倍精度に複製し、doubleをフロアするのではなく、そのステートメント内にmath.floorを置く必要がありました。 double floorddeci = Math.floor(totalspriyard/convertno); –

0
double splitDecimal = split1 - Math.floor(split2); 
int eightFraction = Math.round(splitDecimal) * 8; 
関連する問題