📄 mymath.lst
字号:
C51 COMPILER V6.12 MYMATH 06/28/2007 13:08:17 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE MYMATH
OBJECT MODULE PLACED IN .\mymath.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE .\mymath.c DEBUG OBJECTEXTEND
stmt level source
1 #include<string.h>
2 #include<math.h>
3 #include"tdp.h"
4 /***********************************************
5 浮点数溢出检测函数
6 ***********************************************/
7 bit fover(float x)
8 {
9 1 union
10 1 { float f;
11 1 long l;
12 1 }fl;
13 1 fl.f=x;
14 1 if(fl.l==0x7f800000||fl.l==0xff800000)return 1;
15 1 else return 0;
16 1 }
17 /******************************************
18 浮点数转为字符串.结果以单位前缀方式表示
19 ******************************************/
20 char* ftos(float x)
21 {
22 1 uchar code danwei[]={'p','n','u','m',0,'K','M'};
23 1 char str[8],dw;
24 1 char data *p;
25 1 char i,j;
26 1 if(fover(x))
27 1 { //溢出
28 2 strcpy(str,"INF");
29 2 return str;
30 2 }
31 1 if(x>=1000e6)
32 1 { //溢出
33 2 strcpy(str,"INF");
34 2 return str;
35 2 }
36 1 if(x==0)
37 1 {
38 2 strcpy(str,"0");
39 2 return str;
40 2 }
41 1 //求单位
42 1 x*=1e12;
43 1 for(i=0;i<6 && x>=1000;i++,x/=1e3);
44 1 dw=danwei[i]; //保存单位
45 1 for(j=0;x>=1;j++,x/=10);
46 1 x+=5e-5;
47 1 p=str;
48 1 if(j==0)*p++='0';
49 1 for(i=0;i<4;i++)
50 1 {
51 2 if(j--==0)*p++='.';
52 2 x*=10;
53 2 *p++=(char)x+'0';
54 2 x-=(char)x;
55 2 }
C51 COMPILER V6.12 MYMATH 06/28/2007 13:08:17 PAGE 2
56 1 *p++=dw;
57 1 *p=0;
58 1 return str;
59 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 510 ----
CONSTANT SIZE = 13 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 20
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -