2014-01-28 24 views
0

從係數和10的冪次創建雙精度的好方法是什麼?或者換句話說,在運行時從書寫的科學記數值的有效數和指數中創建一個double的好方法是什麼?如何在C/C++中創建一個來自係數和10的冪的double?

+4

出了什麼問題'係數* POW(10.0,指數)'? – Henrik

+0

對於_two_的力量,你可以使用[std :: ldexp](http://en.cppreference.com/w/cpp/numeric/math/ldexp),但是對於'std :: pow'的力量,全是你有。 –

+2

沒有「科學記數法」的價值 - 科學記數法是價值的文本表示。 – molbdnilo

回答

3

不知道有關數值質量,但顯而易見的方法是:

double make_double(double coefficient, int power) 
{ 
    return coefficient * pow(10.0, power); 
} 
+0

如果你擔心數字質量,那麼爲了安全起見,你可以寫一個字符串並傳遞給strtod。係數的精確度可能仍然會導致問題,但對於輸入中已存在的不準確性,您可以做的不多。 –

相關問題