では、他の問題点について見ていきましょう。まずは、関数intr(55〜63行)です。 この関数は、引数aをdouble型に変換し、標準関数のmodfで、小数部をdouble型のaaに、整数部 をdouble型で再びw1に求め、最後に、w1をキャストでfloat型にして関数の戻り値としています。 実際にこの関数が使われているのは、231行のif文で、 if (intr(gminx) == intr(xd))として、float型の2つの変数、gminxとxdの整数部分の一致検査をしています。2変数の整数部分 だけの比較に関数を用意し、その関数内部から、一般にはあまり使わない関数modfを呼んでいます。 私には、ちょっと信じられない関数の使い方です。まず、float型(あるいはdouble型)の整数部 分を取り出したいのなら、キャストすればいいのです。(int)gminxとすれば、整数部分が、整数型 で求められます。したがって、こういう時こそキャストを使い、 if ( (int)gminx == (int)xd )とすれば良いのです。これで、関数intrは、全く無用の長物であることが分かりましたね。削除し ましょう。もう、キャストを使うべきところで使わず、キャストが不要な所にいっぱい使って、困っ たものです。 ところで、浮動小数点数(double型)の整数への変換には、
![]()
|