home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 1 / FishNMoreVol1.bin / more / code_examples / librar / round.c < prev    next >
Text File  |  1989-02-08  |  1KB  |  47 lines

  1. /*--------------------------------------*/
  2. /*                    */
  3. /*               ROUND(X)        */
  4. /*                    */
  5. /* Takes floating point numbers and     */
  6. /* returns the rounded integer.        */
  7. /*                    */
  8. /*--------------------------------------*/
  9. round(a)
  10. float a;
  11. {
  12.         int x,negflag;
  13.         float ff;
  14.         if (!a)
  15.             return(0);
  16.         negflag=0;
  17.         if (a<0.0){
  18.             negflag=1;
  19.             a*=-1.0;
  20.         }
  21.         x=a;
  22.         if (x==a){
  23.             if (negflag==1)
  24.                 return(-1*x);
  25.             return(x);
  26.         }
  27.         ff=a-x;
  28.         if (ff<.5){
  29.             if (negflag==1)
  30.                 return(-1*x);
  31.             return(x);
  32.         }
  33.         if (ff>.5){
  34.             if (negflag==1)
  35.                 return(-1*(x+1));
  36.             return(x+1);
  37.         }
  38.         if (!efactor(x,2)){
  39.             if (negflag==1)
  40.                 return(-1*x);
  41.             return(x);
  42.         }
  43.         if (negflag==1)
  44.             return(-1*(x+1));
  45.         return(x+1);
  46. }
  47.