Selam
Diyelimki bir float veya double sayısını bir ilintili dizide kullanmam lazım.
Normalde double ve float 'u hash sorunlarından dolayı bu tür veri yapılarında kullanılmaması gerektiğini biliyorum.
Fakat benim anahtar olarak kullanıcağım değer bir epsilon değerinden daha küsüratlı olmayacak. Örneğin kesirli haneler 7 haneden daha çok gitmeyecek.
Acaba aşağıdaki gibi bir tür yaratıp bunu anahtar olarak kullanmak doğrumudur ?
int[PreciseDouble] acabaBuDoğrumu;
struct PreciseDouble
{
enum PRICE_EPSILON = 0.00000001;
double val;
size_t toHash() const
{
return cast(size_t)(this.val*(1.0/PRICE_EPSILON));
}
bool opEquals(ref const PreciseDouble rhs) const
{
return (rhs.val - this.val) < PRICE_EPSILON;
}
}
Erdemdem
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]