2017-12-21 25 views
-1

Stringを取得しようとしていますが、浮動小数点数にしてから、 "###。##"(それを行うことができます)それをfloat変数に送ります(これは私が問題を抱えているところです)。Stringを浮動小数点に設定するには

私はその変数にFloat.parseFloat()を使用していますが、私の浮動小数点数は "###。#"という形式になっていて、浮動小数点数の形式は正確に "###。##"にする必要があります文字列は "321"です。

String priceLabel = "321"; 
    float priceLabelConvertedInFloat = Float.parseFloat(priceLabel); 
    System.out.println(priceLabelConvertedInFloat); 

    NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); 
    DecimalFormat df = (DecimalFormat)nf; 
    df.setMaximumFractionDigits(2); 
    df.setMinimumFractionDigits(2); 

    String priceStringWith2Decimals = df.format(priceLabelConvertedInFloat); 
    System.out.println(priceStringWith2Decimals); 

    float finalPrice = Float.parseFloat(priceStringWith2Decimals); 
    System.out.println(finalPrice); 

それは "321.0" 印刷します - >期待/ "321.00" - >期待/ "321.0" - >希望しない:(

はあなたが提供することができます任意の助けてくれてありがとう

+0

フロートは、小数点以下の桁数を持っていない、と言っても、バイナリ小数の桁のため、小数部分で後続ゼロを追跡しませんあなたが常に必要があります。 floatを出力するにはNumberFormatまたは 'String.format'を使います。 –

答えて

3

を。あなたがあなたの最後のprint文を変更することができます:

System.out.printf("%.2f", finalPrice); 
+0

これに改行を加えて、System.out.printlnのように動作させることができます:' "%.2f%n" ' – VGR

関連する問題