2016-09-02 6 views
0

javaで簡単な計算をしています。期待される結果は51.3348ですが、私が得ているのは51.0です。私の計算はjava-小数点以下の桁で結果を取得しない

float percent = (7819140000l-3805200000l)*100/7819140000l; 

この問題はデータ型に問題がありますか?どのように私は、これは51.3348

として値を取得するために解決することができアドバンス

に感謝
+1

この式では浮動小数点数を使用していないため、切り捨てられています。 – Kelvin

+0

浮動小数点型へのキャストも可能です。 – Shahid

+0

このonepublicを試してみてください。format_Decimal(double decimalNumber){ \t \t NumberFormat nf = NumberFormat.getInstance(); \t \t nf.setMaximumFractionDigits(5); \t \t nf.setMinimumFractionDigits(2); \t \t nf.setRoundingMode(RoundingMode.HALF_UP); \t \t文字列x = nf.format(decimalNumber); \t \t return x; \t} double percent =(7819140000l-3805200000l)* 100f/7819140000l; –

答えて

1

のいずれかの値にFを追加します。

float percent = (7819140000l-3805200000l)*100f/7819140000l; 

を耀輝はそれをしない場合は、Javaがでディビジョンを行います長い値

+0

OPは6桁の精度しか必要としませんが、floatの代わりにdoubleを使用します。これにより、ティルリオンの半分の精度が維持されます –

関連する問題