• ベストアンサー

実数からの小数部の取得

いつも参考にさせて頂いております。 実数から小数部分のみを取り出す良い方法はないでしょうか? 1.25→0.25(もしくは25)となるような。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 まず、DoubleクラスのintValue()メソッドを使えば、整数部がはじける。  IntegerクラスのdoubleValue()メソッドを使えば、そのint値をdouble値に変換できるので、元のdouble値と演算できるね。具体的なサンプルを用意したので参考にして欲しい。 public class A { public static void main(String[] args) { Double d = new Double(1.25); Integer i = new Integer(d.intValue()); Double d2 = new Double(i.doubleValue()); System.out.println(d.doubleValue()); System.out.println(d2.doubleValue()); System.out.println(d.doubleValue() - d2.doubleValue()); } }

b-u-z-z
質問者

補足

anmochiさん、サンプルありがとうございます。 小数部を取得することが出来ました! 余談になってしまうんですが、 int i = new Integer(d.intValue());や double d2 = new Double(i.doubleValue());は、 int i = (int) d;や double d2 = (double) i;などでは まずいんでしょうか? Java(オブジェクト指向)をまだ理解していないもので、いまいちnewとかの使いどころが 曖昧で、サンプルのようなコードイメージがパッと浮かばないんです・・・

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

値を1で割った余りを求めるのが簡単。 例えば System.out.println(123.75 % 1.0); で「0.75」と出力される。 で、補足に関してですが、 > int i = new Integer(d.intValue()); > double d2 = new Double(i.doubleValue()); ↑これはまずい。(new 演算子によって作られた)IntegerやDoubleのオブジェクトをintやdouble型の変数に入れることはできないのです。 anmochi氏の回答をよく見てみてください。int/double型ではなくInteger/Doubleが他の変数に代入していますよね。 > int i = (int) d; > double d2 = (double) i; ↑こちらはOK。 Integer/Double のオブジェクトを使っても、int/double の値で直接計算しても実質的な処理内容は同じです。 ただ、doubleよりintのほうが表せる値の範囲が小さいので元の実数値が大きいと正しく小数部分のみ取り出すことができない可能性があります。 1で割った余りを取る方法ではこういう心配はありません。

b-u-z-z
質問者

お礼

UKYさん、ありがとうございます。 なかなか奥が深いですね。 これからも頑張ります。

関連するQ&A