Örneğin, yukarı doğru yayınlar için otomatik kayan nokta (şablon) yer tutucu var mı? int türleri? Bir parametre alan ve otomatik upcast'leri dikkate alan uygun boyutta bir kayan nokta türü döndüren bir sınıf ya da ilgili bir şeyi kastediyorum.Kayan nokta tipine (upcast) cxx11 içinde entegre
Satırı beğenmedim, çünkü int durumunda, dönüşüm için doğru tür bir çift olur.
if (var_high - var_low <= std::numeric_limits<T>::epsilon())
Ayrıca değiştirmeniz gerekir: O tipi için en küçük gösterilebilen farkı (yüksek-düşük) karşılaştırabilirsiniz
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);
}
: Niye ya? – 101010
@ 101010 Bir floatın yeterli hassasiyete sahip olmayacağı anlamına gelir (her ikisi için 32 bit düşünülerek). –
Daha doğru bir anahtar kelime, fonksiyon veya sınıf otomatik olarak doğru tip (float, double, long double ..) ekliyor muydunuz – dgrat