浮點數和字串相互轉換,哪種演算法實現起來比較容易?

時間 2021-06-01 03:48:34

1樓:豬大毛

float a = 0.111;

printf("%f", fl)

./main > txt

File *f = fopen("txt")Read(f) -_-

2樓:邵老師

浮點數分成整數和小數兩個部分,分別進行單獨處理,最後和小數點符號合成乙個字串。

#include

#include

using namespace std;

string GetFront(int Front)c = '0';

c += shang;

strFront.push_back(c);

string a;

while(!strFront.empty())return a;

}string GetBehind(float Behind)return strBehind;

}void main()

結果如下:

3樓:暮無井見鈴

只考慮 double 的精確表示話可以這樣:

弄個陣列存 2^-1074 到 2^1023 的十進位制表示,列印時挨個加上。

4樓:9chu

實現string->float簡單一些。甚至可以參照http://json.org

上面解析數字的狀態轉移圖來寫。

float->string非常非常複雜。因為浮點數可以有幾種不同的輸出方式:最短長度、n位固定小數字數、n位有效數字輸出等等。

可以看看 google/double-conversion (建議直接用)

5樓:SuperFashi

原來要自己手動實現啊,這種東西沒啥演算法,就是好好看二進位制格式就行。

比如char*轉浮點比較容易,每一位遍歷,遇到小數點標記一下後面有多少位,最後除一下就好。

浮點轉char*,兩種方法,第一種精度不高的,一邊存一邊在浮點數上做運算;另一種就是按二進位制處理,把符號位、指數字和尾數字分開處理。

—————

因為C裡要變長只能手動申請,除非用別人的庫,只能不停的比較,不夠就realloc或者重新malloc。

char* 轉浮點還是比較簡單的,atof/strtof都行。

為什麼叫浮點數

道不輕傳 定點數能表示的數字有限,因為小數點固定,整數字和小數字就固定,就不利於表達特別大或特別小的數,浮點數就可以表示很大或很小的數字,因為小數點不固定,比如 123.45 用十進位制科學計數法可以表達為 1.2345 10 其中 1.2345 為尾數,10 為基數,2 為指數。浮點數利用指數達到...

浮點數如何轉換為定點數?

Aman 按 IEEE754 標準,float 的格式是 binary32,double 的格式是 binary64,浮點數中的有效數字 significant 部分其實可以理解為是乙個定點數,只不過有指數 exponent 部分做了小數點偏移 類似科學計數法,只不過是二進位制的,浮點數因此得名 我...

浮點數是如何計算hash的?

hash的本質是對二進位制串進行操作,只要有一位不同hash結果就差千萬里。那麼,你的問題就是先把相近的值用相同的二進位制串表達,然後去計算hash。具體怎麼定義相近,就由你自己實現。最簡單的辦法就是用吧。這裡的公式編輯器不支援分數麼? 如何保證被看做相等的兩個數值非常接近的浮點數hash到相同的值...