⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftoa.c

📁 Version 6 Unix 核心源代码 Version 6 Unix 核心源代码
💻 C
字号:
ftoa (x, str, prec, format)float x;char *str;{/* converts a floating point number to an ascii string *//* x is stored into str, which should be at least 30 chars long */int ie, i, k, ndig, fstyle;double y;if (nargs() != 7)  IEHzap("ftoa  ");ndig = ( prec<=0) ? 7 : (prec > 22 ? 23 : prec+1);if  (format == 'f' || format == 'F') fstyle = 1;else fstyle = 0;/* print in e format unless last arg is 'f' */ie = 0;/* if x negative, write minus and reverse */if ( x < 0)  {  *str++ = '-';  x = -x;  }/* put x in range 1 <= x < 10 */if (x > 0.0) while (x < 1.0)  {  x =* 10.0;  ie--;  }while (x >= 10.0)  {  x = x/10.0;  ie++;  }/* in f format, number of digits is related to size */if (fstyle) ndig =+ ie;/* round. x is between 1 and 10 and ndig will be printed to   right of decimal point so rounding is ... */for (y = i = 1; i < ndig; i++)  y = y/10.;x =+ y/2.;if (x >= 10.0) {x = 1.0; ie++;} /* repair rounding disasters *//* now loop.  put out a digit (obtain by multiplying by  10, truncating, subtracting) until enough digits out *//* if fstyle, and leading zeros, they go out special */if (fstyle && ie<0)  {  *str++ = '0'; *str++ = '.';  if (ndig < 0) ie = ie-ndig; /* limit zeros if underflow */  for (i = -1; i > ie; i--)    *str++ = '0';  }for (i=0; i < ndig; i++)  {  k = x;  *str++ = k + '0';  if (i == (fstyle ? ie : 0)) /* where is decimal point */    *str++ = '.';  x =- (y=k);  x =* 10.0;  }/* now, in estyle,  put out exponent if not zero */if (!fstyle && ie != 0)  {  *str++ = 'E';  if (ie < 0)    {    ie = -ie;    *str++ = '-';    }  for (k=100; k > ie; k =/10);  for (; k > 0; k =/10)       {       *str++ = ie/k + '0';       ie = ie%k;       }  }*str = '\0';return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -