我正在用C++寫一個包含非常小的浮點數的程序。所以,我用double
來表示數字。但是隨着浮點數在一個循環中相乘,它會導致最終產品爲0.但是我需要顯示實際的浮點數。我如何處理這些數字?如何在C++中處理非常小的數字?
class myclass
{
private :
double value;
}
double calculate(count)
{
double key=this->value;
double prev_level=pow(2,level-1);
if(key-prev_level >=0)
key=key-prev_level;
int index= (2* key) + table[row_num][pos];
double num1=array_l1[index]; // array_l1 and array_l2 are of type double
double num2=array_l2[index];
std::pair<double,double> p = list[key].at(row_num);
double data=p.first;
prod1=num1 *data;
data=p.second;
prod2=num2 * data;
return prod1+prod2;
}
void compute()
{
double prod = 1;
for (int i = 0; i < count; i++)
{
myclass c1(count);
myclass c2(count+1);
double value= c1.calculate * c2.calculate();
}
}
我不能夠包含所有的代碼,因爲它的大小,但我希望這個函數能解釋我面臨的問題。隨着count
的值增加,value
的值減小。因此,對於較大的值count
,我得到一個0.
如何顯示value
的實際值?
'num'什麼也不做。嘗試使用科學計數法打印您的號碼 –
[處理小數字和準確性]可能的重複(http://stackoverflow.com/questions/4799439/dealing-with-small-numbers-and-accuracy) –
什麼是'some_function( )'?你爲什麼不使用'num'?請發佈整個事情。 「由於尺寸大小,我無法編寫完整的代碼」 - 不用擔心,我們可以處理它,就像可以獲得滾動條的文本框一樣。 –