インライン関数で周波数から周期への変換を行います。計算精度はdouble型ではなくlong型を使用する必要があります。そうしないと、丸め誤差が発生する可能性があります。次に、関数は結果をdoubleに変換します。以下のコードで、どの行が計算をlong型に保持するのか疑問に思っていました。パラメータ バーが 100、100.0、33.3333 のいずれであっても。
double foo(long bar)
{
return 1000000/bar;
return 1000000.0/bar;
return (long)1000000/bar;
return (long)1000000.0/bar;
}
自分で試してみたところ、4行目でうまくいきました。しかし、この場合の型変換の概念について疑問に思っています。
編集:
エラーの 1 つは、26.9993 ではなく、1000000/37038 = 26 です。