0
float f = 0.00f;
System.out.println(f);      

出力を与えます:

0.00

パーセンテージで表した数値を小数点以下2桁にフォーマットしたいと思います。ただし、結果は文字列ではなく浮動小数点数になるはずです。

例えば

10.001 needs to be converted to 10.00
0.0 needs to be converted to 0.00
78.8  needs to be converted to 78.80 

このようにフォーマットされた値はfloatに割り当てられます。これをどのように達成しますか?

4

4 に答える 4

7
private float parse(float val){       
     DecimalFormat twoDForm = new DecimalFormat("#.##");
     return Float.valueOf(twoDForm.format(val));
}

有効なfloatを渡すと呼ぶ限り、結果はfloatになります。ただし、文字列でない場合、右端のゼロを表示することはできません。

于 2012-11-27T21:27:16.623 に答える
2

一般的な場合、それはできません。特定の小数値が、小数の右2桁しかないfloatで表現できるという保証はありません。

floatは、この種の精度には不適切なデータ型です。代わりに、10進型またはスケーリングされた整数を使用する必要があります。

割り当ては同じように機能します。値133.47を浮動小数点変数に割り当てると、環境は最も近い有効な浮動小数点数を変数に割り当てます。最も近い有効な浮動小数点数はおそらく133.47ではありません。

このプログラムはCでコンパイルして実行できます。

#include <stdio.h>

int main (void) {
  float r;
  r = 133.47;
  printf("%.2f, %f\n", r, r);
  return 0;
}

これらの値を私のシステムに出力します

$ ./a.out
133.47, 133.470001

小数点以下2桁にフォーマットすると、「r」の外観は変わりましたが、値は変わりませんでした。システムは、フォーマットされた値ではなく、実際の値に基づいて浮動小数点演算を実行します。(データ型も変更しない限り。)

于 2012-11-27T21:24:12.160 に答える
0

フロートには小数点以下の桁はありません。彼らはバイナリの場所を持っています。したがって、小数点以下2桁までの浮動小数点数で正確に表すことができる分数は、0、0.25、0.5、0.75のみです。他のすべての場合、あなたが求めていることは不可能です。

于 2012-11-28T01:24:15.743 に答える
0
import java.text.DecimalFormat;

public class Padding {
    public static void main(String[] args) {
        float value = 10.001f;
        DecimalFormat decimal = new DecimalFormat("0.00");

        String formattedValue = decimal.format(value);
        System.out.println(formattedValue);
    }

}

出力:10.00

于 2015-12-01T13:08:02.307 に答える