好きなおでんの具材ドラフト会議しましょう

整数の桁数を調べ、10乗の形に書き換えるメソッド(例789→100)で、
最後のMath.powメソッドでエラーが出ます。[ERROR] At box line: 011, incompatible types: possible lossy conversion from double to int.
これはどういう意味ですか。

public int powerOfTen(int n)
{
int count = 0;
while (n !=0){
count ++;
n/= 10;
}
return Math.pow (10,count);
}

A 回答 (2件)

Java では int → double の自動型変換はありますが、


逆の double → int は情報量が減る変換なので、自動ではしてくれません。

関数 pow は double 型を処理するものなので
https://docs.oracle.com/javase/jp/10/docs/api/ja …

戻り値は当然 double 型ですが、
メソッド powerOfTen の戻り値は int 型なのでエラーとなっています。

ご提示の内容ならば double → int 変換しても問題ないので、
明示的に型キャストをつけましょう。
return (int) Math.pow(10,count);
    • good
    • 1

1. あなたが作った関数powerOfTenの戻り値の型はintですね?


2. Math.powをライブラリで調べてみます。
https://docs.oracle.com/javase/10/docs/api/java/ …
public static double pow​(double a,double b)
このメソッドの戻り値の型はdoubleです。

3. では
public int someFunction()
{
return Math.pow (1.5, 2.0);
}
の答えはどうなりますか?

4. 戻り値の型をdoubleにした

public double someFunction2()
{
return Math.pow (1.5, 2.0);
}

はどうですか?
    • good
    • 1

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


おすすめ情報