プロが教えるわが家の防犯対策術!

いつも参考にさせて頂いております。

実数から小数部分のみを取り出す良い方法はないでしょうか?
1.25→0.25(もしくは25)となるような。

よろしくお願いします。

A 回答 (2件)

 まず、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());
}
}

この回答への補足

anmochiさん、サンプルありがとうございます。
小数部を取得することが出来ました!

余談になってしまうんですが、
int i = new Integer(d.intValue());や
double d2 = new Double(i.doubleValue());は、
int i = (int) d;や
double d2 = (double) i;などでは
まずいんでしょうか?

Java(オブジェクト指向)をまだ理解していないもので、いまいちnewとかの使いどころが
曖昧で、サンプルのようなコードイメージがパッと浮かばないんです・・・

補足日時:2004/12/10 01:17
    • good
    • 0

値を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で割った余りを取る方法ではこういう心配はありません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/11 00:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています