[問題] 請問float轉char[],要怎實現?(不用spr …

看板C_and_CPP (C/C++)作者 (ㄚ濱)時間15年前 (2010/10/17 01:03), 編輯推噓0(007)
留言7則, 3人參與, 最新討論串1/1
好吧,這問題根本就是問sprintf的實現方法。 現在有 float a,想轉成 char f[N], 那請問要怎實作呢? 我想到的是,用暴力法作。 float aa; int med = 0; aa = a; /*先找小數點前幾位*/ if(a > 0) { med = 1; while(aa > 1.0 ) { aa/= 10.0; med++; }/*while*/ } else { med = 0; } // 後面就開使 狂除... aa = a; int number; for(int i = 0; i<N; i++){ if( 0 == med && 0 == i) f[0] == '0'; continue; if( 0 == med && 1 == i) f[0] == '.'; continue; /*後面羅級就是幹到死 的做法*/ number = (int)(aa/pow(10.0,med - 1)) switch( number ) { case 1: char[i] = '1'; break; case 2: char[i] = '2'; break; : }/*switch*/ if(med > 0) continue; /*後面處理小數點部份 就不寫了*/ : : : }/*for*/ : /*可能要再做些處理 還沒想清處*/ : ======================================= 請問有聰明點的做法嘛???? 這樣硬幹很蠢啊。。 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.43.135.230

10/17 01:23, , 1F
char *ptr = strchr(buffer,'.'), int pos=ptr-buffer;
10/17 01:23, 1F

10/17 01:23, , 2F
其它動作和你說的差不多..
10/17 01:23, 2F

10/17 01:28, , 3F
誤會一場..是 float 轉 char*
10/17 01:28, 3F

10/17 01:33, , 4F
modf 應該可以幫你不少忙.. (math.h)
10/17 01:33, 4F
※ 編輯: d85631566 來自: 115.43.135.230 (10/17 02:48)

10/17 03:21, , 5F
找出小數點前後的數字 用itoa
10/17 03:21, 5F

10/17 19:07, , 6F
最聰明的方法就是去下載 glibc 的原始碼,直接看他怎麼寫
10/17 19:07, 6F

10/17 19:07, , 7F
,高興的話,newlib 等等的也行。
10/17 19:07, 7F
文章代碼(AID): #1CkTheNb (C_and_CPP)
文章代碼(AID): #1CkTheNb (C_and_CPP)