當前位置:編程學習大全網 - 源碼下載 - ftoa函數的源代碼實現

ftoa函數的源代碼實現

不要用sprintf,用residual%,代碼少。

# include & ltstdio.h & gt

# include & ltmath.h & gt

//?四個二進制位轉換成16位的字符(三個二進制位轉換成八進制位的字符)(十進制0-9轉換成壹個字符)。

夏爾?FourBinaryToOneHexadecimalChar(無符號?夏爾?數字)

{

切換?(數字)

{

案子?0:?回歸?'0';

案子?1:?回歸?'1';

案子?2:?回歸?'2';

案子?3:?回歸?'3';

案子?4:?回歸?'4';

案子?5:?回歸?'5';

案子?6:?回歸?'6';

案子?7:?回歸?'7';

案子?8:?回歸?'8';

案子?9:?回歸?'9';

案子?10:?回歸?a’;

案子?11:?回歸?b’;

案子?12:?回歸?c’;

案子?13:?回歸?d’;

案子?14:?回歸?e’;

案子?15:?回歸?f’;

默認:?回歸?x’;

}

}

//?字符串倒置

作廢?反向限制(char?*來源,?int?開始,?int?結束)

{

int?我;

夏爾?溫度;

為了什麽?(我?=?0;?我?& lt?((完?-?開始?+?1)?/?2);?++i)

{

臨時工?=?來源【開始?+?I];

來源【開始?+?我]?=?來源【End?-?I];

來源【End?-?我]?=?溫度;

}

}

//?比較浮動類型大小

int?CompareFloat(float?壹、?浮動?b)

{

如果?((A?& lt?b)

& amp& amp?(fabs(A?-?b)?& gt?1e-6f))

{

回歸?-1;

}

不然呢?如果?((A?& gt?b)

& amp& amp?(fabs(A?-?b)?& gt?1e-6f))

{

回歸?1;

}

其他

{

回歸?0;

}

}

//?浮點到字符串(十進制)(精度是十進制精度)

作廢?flottostringdecimal(float?浮,?夏爾?*目的地,?未簽名?int?精度)

{

如果?(CompareFloat(Float,?0)?!=?0)

{

//?將小數位移到整數位

浮動?臨時工?=?浮動?*?powf(10.0f,?(浮點)精度);

//?負數轉換成正數,否則不能使用拼圖的轉換。

如果?(CompareFloat(Temp,0)?==?-1)

{

臨時工?=?-溫度;

}

浮動?IntInFloat?=?0.0;

modff(溫度,& ampintin float);

int?我?=?0;

未簽名?夏爾?num

為了什麽?(我?=?0;?(我?& lt?(int)精度)?& amp& amp?(CompareFloat(IntInFloat,?0)?!=?0);?++i)

{

//?浮動?轉?未簽名?(同Internationalorganizations)國際組織

//?拼圖的變換(因為不知道內部怎麽實現,所以叫拼圖的變換)

num?=?(未簽名?char)((無符號?int)IntInFloat?%?10);

目的地[i]?=?FourBinaryToOneHexadecimalChar(num);

IntInFloat?/=?10;

modff(IntInFloat,?& ampintin float);

}

如果?(精度?!=?0)

{

目的地[i]?=?'.';

++ I;

}

什麽時候?(CompareFloat(IntInFloat,?0)?!=?0)

{

num?=?(未簽名?char)((無符號?int)IntInFloat?%?10);

目的地[i]?=?FourBinaryToOneHexadecimalChar(num);

IntInFloat?/=?10;

modff(IntInFloat,?& ampintin float);

++ I;

}

如果?(CompareFloat(Float,?0)?==?-1)

{

目的地[i]?=?'-';

++ I;

}

反向跟蹤(目的地,0,?我?-?1);

目的地[i]?=?'\0';

返回;

}

其他

{

目的地[0]?=?'0';

目的地[1]?=?'\0';

返回;

}

}然後是測試。

//?試驗碼

fprintf(FP_BaseZeroth,?“測試對象:void?flottostringdecimal(float?浮,?夏爾?*目的地,?未簽名?int?精度)\ n ");

fprintf(FP_BaseZeroth,?"測試輸入:0;?123;?123.456;?-123;?-123.456;?1.23456 e 10f;\ n ");

fprintf(FP_BaseZeroth,?"預測輸出:0;?123;?123.456;?-123;?-123.456;?確定有效數字部分\ n”);

fprintf(FP_BaseZeroth,?"實際產量:");

浮動?答[6]?=?{?0.0f,?123.0f,?123.456f,?-123.0f,?-123.456f,?1.23456e10f?};

夏爾?des[100];

flottostringdecimal(A[0],?德斯?0);

fprintf(FP_BaseZeroth,?" % s;?",?des);

flottostringdecimal(A[1],?德斯?0);

fprintf(FP_BaseZeroth,?" % s;?",?des);

flottostringdecimal(A[2],?德斯?3);

fprintf(FP_BaseZeroth,?" % s;?",?des);

flottostringdecimal(A[3],?德斯?0);

fprintf(FP_BaseZeroth,?" % s;?",?des);

flottostringdecimal(A[4],?德斯?3);

fprintf(FP_BaseZeroth,?" % s;?",?des);

flottostringdecimal(A[5],?德斯?3);

fprintf(FP_BaseZeroth,?" % s;?",?des);

fprintf(FP_BaseZeroth,?" \ n \ n ");試驗結果

  • 上一篇:Python3與oracle的連接報告了壹個錯誤。
  • 下一篇:Php上傳到服務器的前端和php代碼。
  • copyright 2024編程學習大全網