實數型別的封裝 real template

2021-04-06 20:07:57 字數 2221 閱讀 4636

實數型別一直我們容易誤用的東西,特別是在比較大小的時候。

經驗豐富的人,可能能很容易寫出這樣的**:

if(lear+0.1<3.4 && lear-0.1>3.4) 來表示 lear==3.4 這樣乙個意思。

但每次都這樣寫,麻煩,也缺少全域性統一。

下面這個real.h檔案就是我寫的乙個 real模版:

#ifndef real_type_piboye_header

#define real_type_piboye_header

/** file: real.h

* author:piboye

* email:[email protected]

* the date of created:2006.4.15

* vertion: 1.1 beta

*/namespace piboye

;// convert to base_type,yet t type;

operator base_type()const 

// fetch epsilon;

base_type epsilon()const

// get the value of based and raw data

base_type raw()const

// set the value of based and raw data

void raw(base_type a_1)

//assignment operate

template

real & operator =(t1 a_2)

// algorithm operator with return new object;

#define realop(op) /

template /

real operator op (t1 a_2) const

realop(+)

realop(-)

realop(*)

realop(/)

#undef realop

// agorithm operator for noreturn new object;

#define realops(op) /

template /

real & operator op (t1 a_2)

realops(+=)

realops(-=)

realops(*=)

realops(/=)

#undef realops

//comparision operatorn 

// equal to

template

bool operator==(t1 a_value) const

// larger or equal

template

bool operator>=(t1 a_value) const

private:

base_type i_num; // member data for raw data

base_type const   i_epsilon; //memeber data for epsilon used in comparing

}; //ended real class

// auxiliary class for real

// epsilon class

template

class epsilon

//get epsilon

base_type get(void)const

//set epsilon

void set(base_type a_epsilon)

// make a real object

template

realmake(t1 a_value)

private:

base_type i_epsilon; // epsilon member data

}; //ended epsilon class

// addtional add opertator for expression

template/

inline   realoperator + (t a_1,epsilona_2)

}// ended piboye namespace

#endif //real_type_piboye_header

Pascal 整數字元,實數型別

整數型別 範圍 備註 integer 2 147 483 648 2 147 483 647 32 位帶符號數 cardinal 0 42 994 967 295 32 位無符號數 shortint 128 127 8 位帶符號數 smallint 32 768 32 767 16 位帶符號數 lo...

MySQL實數型別使用注意事項

實數型別,即支援儲存帶小數的資料型別。mysql資料庫中的實數型別,既有支援精確型別的,也有支援不精確型別的,所以,在使用的過程中需要注意一些注意事項。1.float和double型別使用標準的浮點運算進行近似計算,這裡注意是近似計算,所以在一些計算結果中可能會因為精度損失而導致一些意想不到的結果。...

實數的連續統

這個實數的問題,一直讓我覺得搞不太明白,數學的一切都是從自然數開始衍生,數學這個巨集偉的大廈的基石就是自然數,當然自然數是誰創造的,誰都不知道。數學就是通過一步步假設 推理和反思的最終結果。實數集是沒有辦法進行測量的集合,因為現實生活中的儀表表示的數字總是乙個有理數。因此,實數集是乙個抽象的概念,必...