1樓:匿名使用者
思路是:
先將double型的數字整數部分變為整型數字一一取到陣列中去(用迴圈整除可以做到,比如double i=123.456,就可以先把整數部分用j=(int)i強制型別轉換取出放入整型變數j中,再依次取到陣列a中
(a[k++]=i%10;i/=10;)
這兩句語句就可以做到(不過數字是倒序的,最後輸出時要注意)。
再看小數部分,同理,但不用除法,而用乘法,先去除整數部分(j=j-(int)j;)
再將小數部分不斷的乘10取整,取一位去除一位,存入另一陣列:
l=(int)(j*10);
b[k++]=l;
j=j*10-l;...直到j*10==0為止這樣就可以把j中的數按位取到了兩個陣列中,接下去只要將兩陣列合併到c陣列中去,或者依次輸出整數部分和小數部分,中間別忘加小數點,輸出成字元在c語言裡可以這樣:
printf("%c",a[i]+'0');
printf(".");
printf("%c",b[i]+'0');
以上就是我的演算法,請高手看了不要笑話,希望能給樓主帶來啟發。
2樓:匿名使用者
樓上的思路基本正確。但事實上vc++中已經有整合該運算的函式。分別是atof 和_pcvt.
#include
1、atof()
該函式將數字字串轉化為浮點型數值。原型如下:
double atof(const char *)const char *是要轉化的數字字串,返回的值為浮點數值。
2、_gcvt()
該函式跟atof()正好相反,用來把數值轉化為數字字串。原型如下:
char *_gcvt(double,int ,char*)引數意義如下:
double:被轉換資料。
int:數字字串長度。(通常可以是char*長度。)char*:轉換後的數字字串。
例:我們要把3.14換成字串。
#include
char a[5]; /*注意:記憶體空間要比3.14的數字大*/_gcvt(3.14,4,a);
那麼在a裡面,a[1]='3',a[2]='.',a[3]='1',a[4]='4' ,a[5]='\0';
這就是你想要的結果。
但是在char裡面儲存的是字元而不是數字。
如: '0'這個字元不等於0,而是48。『1』是49。。
也就是每個字元-48就可得其值。
剩餘的轉化過程就請你自己編寫。非常簡單。
c語言如何將浮點型資料轉換為陣列
3樓:
庫函式gcvt可以完成bai此任務,它返回轉換du後的字串zhi的位址。如:
//#include "stdafx.h"//if the vc++6.0, with this line.
#include "stdio.h"
#include "stdlib.h"
int main(void)
4樓:匿名使用者
#include "stdio.h"
float temp=26.3;
char buf[10];
sscanf(temp,"%4.1f",buf);//buf="26.3"
lcd_putstring(buf);
微控制器baic語言程式設計裡du可以呼叫sscanf函式,zhi但是daoscanf,printf就不行版了,那是需要硬體權
5樓:匿名使用者
26.3轉字元陣列還是浮點陣列呀?
c語言中int型變數加上double型的變數
程振 會將int型別轉換成double型別再與double型別的變數相加。型別不一樣的數相加,首先將型別轉換成一樣的然後相加,轉換原則,短型別向長型別看齊,長短指在記憶體中所佔空間的長短 得出的結果是double型.這個不需要強制轉換的,系統會自動轉換的. double,計算時會自動轉化之doubl...
c語言中double和float型資料的表現形式
雙精度浮點 double 型,佔8 個位元組 64位 記憶體空間。其數值範圍為1.7e 308 1.7e 308,雙精度完全保證的有效數字是15位,16位只是部分數值 而單精度保證7位有效數字,部分數值有8位有效數.c 標準要求 float 型別至少要能精確表示到小數點後6位,並且整數部分的表示範圍...
c語言中如何將結構中變數清空,在C語言中如何把陣列清空
夏老師問一問 可以利用memset函式對變數進行清空操作。memset 函式原型是extern void memset void buffer,int c,int count buffer 為指標或是陣列,c 是賦給buffer的值,count 是buffer的長度.這個函式在socket中多用於清...