たとえば、アップキャストのための自動浮動小数点(テンプレート)プレースホルダがありますか? int型?私は、パラメータを取り、自動アップキャストを考慮した適切なサイズの浮動小数点型を返すクラスや何かを意味します。cxx11の浮動小数点型(アップキャスト)に整数
私は行が気に入らない。なぜなら、intの場合、正しいタイプの変換はdoubleになるからです。この例では
if(is_equal((float)var_high, (float)var_low)) {
:
template <class T>
T linear_interpolate(const T &low_output, const T &high_output,
const T &var_value,
const T &var_low, const T &var_high)
{
if (var_value <= var_low) {
return low_output;
}
if (var_value >= var_high) {
return high_output;
}
// avoid zero divisions or zero like divisions
if(is_equal((float)var_high, (float)var_low)) {
return low_output;
}
T p = (var_value - var_low)/(var_high - var_low);
return low_output + p * (high_output - low_output);
}
「int型の場合は、変換のための右のタイプは、二重になります」。どうして? – 101010
@ 101010フロートが十分な精度を持たないことを意味すると思います(両方とも32ビットと考える)。 –
キーワード、関数、または自動的に正しい型(float、double、long double ..)を自動的に挿入するクラスを探していました – dgrat