我目前正在編寫一個需要高精度浮點數的軟件。有時我需要比double
可以給我更多的精度。我知道爲什麼經典浮點數只能達到有限的精度。我們可以使用字符串作爲高精度浮點數嗎?
我正在考慮這個問題,並有想法使用string
來表示數字並用它們進行計算。
string number_one = "12.3459233547343432";
string number_two = "738.67632487523747384";
string sum = sum_strings(number_one, number_two);
cout << sum << endl; // 751.0222482299717...
功能sum_strings
然後將執行另外像我們都學會了在小學(只是浮點):
減法會的工作方式相同。乘法和除法會更復雜,但它也可以工作。
我想在理論上你可以達到儘可能多的精度,因爲你需要(有足夠的內存來存儲字符串)。
我的問題是:
- 請問這種技術是多少(對於〜10位小數)慢?
- 它已經被使用過,有沒有實現它的庫?
這被稱爲浮點模擬,它顯着較慢,因爲本地浮點計算通常是原子CPU commad,而模擬可能需要數十個CPU命令。 –
假設你的意思是10位有效數字而不是10位小數(否則,這些信息實際上與問題無關),「double」綽綽有餘,足以精確存儲所需的信息。然後再一次,你的散文與你的實際例子不符,所以誰知道。 –
請注意,'3'+'2'幾乎肯定不等於'5',因爲'3'不等於'3','2'不等於'2'用我見過的任何字符編碼。 –