2012-12-19 4 views
5

問題があります。私のJSPページには、金銭的価値を受け入れるテキストフィールドがあります。 66777764のような値を入力すると、検証エラーが発生したときはいつでも自分のテキストフィールドに6.6777764E7になります。私はこれがデータベースに保存された値に影響しないことを知っていますが、私はその誤解を招く/ユーザーに混乱すると思います。助けてください。前もって感謝します。Javaが2倍の指数形式に変換する理由

+6

に従ってください。 「[java形式double](https://www.google.com/search?q=java+format+double)」を検索すると、豊富な情報が得られます。また、** double **(または他の浮動小数点を金額に使用しないでください。 –

+0

ペーストコードは –

答えて

8

doubleのように数字をそのまま残しているようです。66777764は実際には66.777764.0です。表示されているものが表示されます。

次の例のように、あなたが望むように番号の表示をフォーマットするDecimalFormatを使用することができます。

double d = 1.234567; 
DecimalFormat df = new DecimalFormat("#.##"); 
System.out.print(df.format(d)); // will print 1.23 

これがために多くのオプションがありますが、ポイントの後に2桁(66777764.00)と番号が表示されます形式については、ドキュメントの情報を確認してください。

+0

です。BigDecimalの回答はまだ通貨に関する推奨事項です。 –

+0

通貨部分についてはあなたが正しいです –

5

BigDecimalを使用して金銭的価値を維持します。

double d = 66777764d; 
BigDecimal bd = new BigDecimal(d); 
System.out.println(bd); 

the answer of this questionを読み、BigDecimalを使用する理由を確認してください。

+3

そして私はしたいですadd:決して浮動小数点数を使用することはありません。すなわち、Javaで倍精度浮動小数点数を使用して金銭的価値を保持することは決してありません。 – jmg

6

は、それはすべてあなたが `double`をフォーマットしているどのようにだBigDecimal

BigDecimal bd = new BigDecimal(inputVal); 
System.out.println(bd); 
関連する問題