BigDecimalのコンストラクタに文字列を渡す
BigDicimalのコンストラクタに渡す引数に、なぜ間にStringをかませるのか。今日教えてもらって納得したつもりになったんだけど、家に帰ってみるとまだ分かってなかった。解答に示されたコードは以下の通り。
double num = Math.random(); BigDecimal bd = new BigDecimal(String.valueOf(num));
今日教えてもらったことについて、以下のコード。
BigDecimal bd = new BigDecimal(3.14); System.out.println(bd);
実行結果
3.140000000000000124344978758017532527446746826171875
BigDecimalに実数を渡すと、より精密に計算して、それを値を持っている。という認識でいいだろうか。
勿論double型に実数リテラルを代入しても、帰ってくるのはそのままの数値。
double d = 3.6; System.out.println(d);
で、BigDecimalのコンストラクタに文字列を渡した場合はどうなるか。
BigDecimal bd = new BigDecimal("3.14"); System.out.println(bd);
実行結果
3.14
渡した文字列のままで帰ってくる。つまり乱数を渡すとき、べらべら長くするなよという処理をするために、引数をString型にしていた。という認識でいいだろうか。
追記
BigDecimal hoge = BigDicimal.valueOf(3.14); BigDecimla piyo = new BigDicimal(Double.toString(3.14));