CMGDK r49-rc2
K:/CMGDKv18/SDK/Source/SQL/MySQL/include/decimal.h
浏览该文件的文档。
00001 / *   C o p y r i g h t   ( C )   2 0 0 0   M y S Q L   A B 
00002  
00003        T h i s   p r o g r a m   i s   f r e e   s o f t w a r e ;   y o u   c a n   r e d i s t r i b u t e   i t   a n d / o r   m o d i f y 
00004  
00005        i t   u n d e r   t h e   t e r m s   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e   a s   p u b l i s h e d   b y 
00006  
00007        t h e   F r e e   S o f t w a r e   F o u n d a t i o n ;   v e r s i o n   2   o f   t h e   L i c e n s e . 
00008  
00009        T h i s   p r o g r a m   i s   d i s t r i b u t e d   i n   t h e   h o p e   t h a t   i t   w i l l   b e   u s e f u l , 
00010  
00011        b u t   W I T H O U T   A N Y   W A R R A N T Y ;   w i t h o u t   e v e n   t h e   i m p l i e d   w a r r a n t y   o f 
00012  
00013        M E R C H A N T A B I L I T Y   o r   F I T N E S S   F O R   A   P A R T I C U L A R   P U R P O S E .     S e e   t h e 
00014  
00015        G N U   G e n e r a l   P u b l i c   L i c e n s e   f o r   m o r e   d e t a i l s . 
00016  
00017        Y o u   s h o u l d   h a v e   r e c e i v e d   a   c o p y   o f   t h e   G N U   G e n e r a l   P u b l i c   L i c e n s e 
00018  
00019        a l o n g   w i t h   t h i s   p r o g r a m ;   i f   n o t ,   w r i t e   t o   t h e   F r e e   S o f t w a r e 
00020  
00021        F o u n d a t i o n ,   I n c . ,   5 9   T e m p l e   P l a c e ,   S u i t e   3 3 0 ,   B o s t o n ,   M A     0 2 1 1 1 - 1 3 0 7     U S A   * / 
00022  
00023  # i f n d e f   _ d e c i m a l _ h 
00024  
00025  # d e f i n e   _ d e c i m a l _ h 
00026  
00027  t y p e d e f   e n u m 
00028  
00029  { T R U N C A T E = 0 ,   H A L F _ E V E N ,   H A L F _ U P ,   C E I L I N G ,   F L O O R } 
00030  
00031      d e c i m a l _ r o u n d _ m o d e ; 
00032  
00033  t y p e d e f   i n t 3 2   d e c i m a l _ d i g i t _ t ; 
00034  
00035  t y p e d e f   s t r u c t   s t _ d e c i m a l _ t   { 
00036  
00037      i n t         i n t g ,   f r a c ,   l e n ; 
00038  
00039      m y _ b o o l   s i g n ; 
00040  
00041      d e c i m a l _ d i g i t _ t   * b u f ; 
00042  
00043  }   d e c i m a l _ t ; 
00044  
00045  i n t   i n t e r n a l _ s t r 2 d e c ( c o n s t   c h a r   * f r o m ,   d e c i m a l _ t   * t o ,   c h a r   * * e n d , 
00046  
00047                                            m y _ b o o l   f i x e d ) ; 
00048  
00049  i n t   d e c i m a l 2 s t r i n g ( d e c i m a l _ t   * f r o m ,   c h a r   * t o ,   i n t   * t o _ l e n , 
00050  
00051                                        i n t   f i x e d _ p r e c i s i o n ,   i n t   f i x e d _ d e c i m a l s , 
00052  
00053                                        c h a r   f i l l e r ) ; 
00054  
00055  i n t   d e c i m a l 2 u l o n g l o n g ( d e c i m a l _ t   * f r o m ,   u l o n g l o n g   * t o ) ; 
00056  
00057  i n t   u l o n g l o n g 2 d e c i m a l ( u l o n g l o n g   f r o m ,   d e c i m a l _ t   * t o ) ; 
00058  
00059  i n t   d e c i m a l 2 l o n g l o n g ( d e c i m a l _ t   * f r o m ,   l o n g l o n g   * t o ) ; 
00060  
00061  i n t   l o n g l o n g 2 d e c i m a l ( l o n g l o n g   f r o m ,   d e c i m a l _ t   * t o ) ; 
00062  
00063  i n t   d e c i m a l 2 d o u b l e ( d e c i m a l _ t   * f r o m ,   d o u b l e   * t o ) ; 
00064  
00065  i n t   d o u b l e 2 d e c i m a l ( d o u b l e   f r o m ,   d e c i m a l _ t   * t o ) ; 
00066  
00067  i n t   d e c i m a l _ a c t u a l _ f r a c t i o n ( d e c i m a l _ t   * f r o m ) ; 
00068  
00069  i n t   d e c i m a l 2 b i n ( d e c i m a l _ t   * f r o m ,   u c h a r   * t o ,   i n t   p r e c i s i o n ,   i n t   s c a l e ) ; 
00070  
00071  i n t   b i n 2 d e c i m a l ( c o n s t   u c h a r   * f r o m ,   d e c i m a l _ t   * t o ,   i n t   p r e c i s i o n ,   i n t   s c a l e ) ; 
00072  
00073  i n t   d e c i m a l _ s i z e ( i n t   p r e c i s i o n ,   i n t   s c a l e ) ; 
00074  
00075  i n t   d e c i m a l _ b i n _ s i z e ( i n t   p r e c i s i o n ,   i n t   s c a l e ) ; 
00076  
00077  i n t   d e c i m a l _ r e s u l t _ s i z e ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ,   c h a r   o p , 
00078  
00079                                                  i n t   p a r a m ) ; 
00080  
00081  i n t   d e c i m a l _ i n t g ( d e c i m a l _ t   * f r o m ) ; 
00082  
00083  i n t   d e c i m a l _ a d d ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ,   d e c i m a l _ t   * t o ) ; 
00084  
00085  i n t   d e c i m a l _ s u b ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ,   d e c i m a l _ t   * t o ) ; 
00086  
00087  i n t   d e c i m a l _ c m p ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ) ; 
00088  
00089  i n t   d e c i m a l _ m u l ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ,   d e c i m a l _ t   * t o ) ; 
00090  
00091  i n t   d e c i m a l _ d i v ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ,   d e c i m a l _ t   * t o , 
00092  
00093                                  i n t   s c a l e _ i n c r ) ; 
00094  
00095  i n t   d e c i m a l _ m o d ( d e c i m a l _ t   * f r o m 1 ,   d e c i m a l _ t   * f r o m 2 ,   d e c i m a l _ t   * t o ) ; 
00096  
00097  i n t   d e c i m a l _ r o u n d ( d e c i m a l _ t   * f r o m ,   d e c i m a l _ t   * t o ,   i n t   n e w _ s c a l e , 
00098  
00099                                      d e c i m a l _ r o u n d _ m o d e   m o d e ) ; 
00100  
00101  i n t   d e c i m a l _ i s _ z e r o ( d e c i m a l _ t   * f r o m ) ; 
00102  
00103  v o i d   m a x _ d e c i m a l ( i n t   p r e c i s i o n ,   i n t   f r a c ,   d e c i m a l _ t   * t o ) ; 
00104  
00105  # d e f i n e   s t r i n g 2 d e c i m a l ( A , B , C )   i n t e r n a l _ s t r 2 d e c ( ( A ) ,   ( B ) ,   ( C ) ,   0 ) 
00106  
00107  # d e f i n e   s t r i n g 2 d e c i m a l _ f i x e d ( A , B , C )   i n t e r n a l _ s t r 2 d e c ( ( A ) ,   ( B ) ,   ( C ) ,   1 ) 
00108  
00109  / *   s e t   a   d e c i m a l _ t   t o   z e r o   * / 
00110  
00111  # d e f i n e   d e c i m a l _ m a k e _ z e r o ( d e c )                 d o   {                                 \ 
00112  
00113                                                                                  ( d e c ) - > b u f [ 0 ] = 0 ;         \ 
00114  
00115                                                                                  ( d e c ) - > i n t g = 1 ;             \ 
00116  
00117                                                                                  ( d e c ) - > f r a c = 0 ;             \ 
00118  
00119                                                                                  ( d e c ) - > s i g n = 0 ;             \ 
00120  
00121                                                                              }   w h i l e ( 0 ) 
00122  
00123  / * 
00124  
00125      r e t u r n s   t h e   l e n g t h   o f   t h e   b u f f e r   t o   h o l d   s t r i n g   r e p r e s e n t a t i o n 
00126  
00127      o f   t h e   d e c i m a l   ( i n c l u d i n g   d e c i m a l   d o t ,   p o s s i b l e   s i g n   a n d   \ 0 ) 
00128  
00129  * / 
00130  
00131  # d e f i n e   d e c i m a l _ s t r i n g _ s i z e ( d e c )   ( ( ( d e c ) - > i n t g   ?   ( d e c ) - > i n t g   :   1 )   +   \ 
00132  
00133                      ( d e c ) - > f r a c   +   ( ( d e c ) - > f r a c   >   0 )   +   2 ) 
00134  
00135  / *   n e g a t e   a   d e c i m a l   * / 
00136  
00137  # d e f i n e   d e c i m a l _ n e g ( d e c )   d o   {   ( d e c ) - > s i g n ^ = 1 ;   }   w h i l e ( 0 ) 
00138  
00139  / * 
00140  
00141      c o n v e n t i o n s : 
00142  
00143          d e c i m a l _ s m t h ( )   = =   0           - -   e v e r y t h i n g ' s   o k 
00144  
00145          d e c i m a l _ s m t h ( )   < =   1           - -   r e s u l t   i s   u s a b l e ,   b u t   p r e c i s i o n   l o s s   i s   p o s s i b l e 
00146  
00147          d e c i m a l _ s m t h ( )   < =   2           - -   r e s u l t   c a n   b e   u n u s a b l e ,   m o s t   s i g n i f i c a n t   d i g i t s 
00148  
00149                                                                c o u l d ' v e   b e e n   l o s t 
00150  
00151          d e c i m a l _ s m t h ( )   >     2           - -   n o   r e s u l t   w a s   g e n e r a t e d 
00152  
00153  * / 
00154  
00155  # d e f i n e   E _ D E C _ O K                                 0 
00156  
00157  # d e f i n e   E _ D E C _ T R U N C A T E D                   1 
00158  
00159  # d e f i n e   E _ D E C _ O V E R F L O W                     2 
00160  
00161  # d e f i n e   E _ D E C _ D I V _ Z E R O                     4 
00162  
00163  # d e f i n e   E _ D E C _ B A D _ N U M                       8 
00164  
00165  # d e f i n e   E _ D E C _ O O M                             1 6 
00166  
00167  # d e f i n e   E _ D E C _ E R R O R                         3 1 
00168  
00169  # d e f i n e   E _ D E C _ F A T A L _ E R R O R             3 0 
00170  
00171  # e n d i f 
00172  
00173  
 全部  名字空间 文件 函数 变量 类型定义 枚举 枚举值 友元 宏定义