簡単な質問。私のコードでは、次のようにdoubleを整数に設定しました。
int square_root = sqrt(sum);
これを明示的にキャストする必要がありますか?
キャストせずに、私は私が望む結果を得るようです、すなわちfloor(sqrt(x))
sqrt(4200) = 64
sqrt(42) = 6
簡単な質問。私のコードでは、次のようにdoubleを整数に設定しました。
int square_root = sqrt(sum);
これを明示的にキャストする必要がありますか?
キャストせずに、私は私が望む結果を得るようです、すなわちfloor(sqrt(x))
sqrt(4200) = 64
sqrt(42) = 6
int square_root = sqrt(sum);
Cでは次と同等です。
int square_root = (int) sqrt(sum);
ここで、aの積分部分がでdouble
表現できない場合int
、動作は未定義であることに注意してください(どちらの場合も)。
機能的には違いはありませんが、明示的なキャストにより、切り捨てが行われているという事実に読者の注意を引くことができます。
数値の平方根が整数の場合、影響はありません。しかし、それが実数 (たとえば 10 の平方根) の場合、プログラムにとって不便な切り捨てられた整数が得られます。