home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16286 < prev    next >
Encoding:
Text File  |  1992-11-10  |  1.3 KB  |  41 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!ferkel.ucsb.edu!taco!gatech!destroyer!caen!saimiri.primate.wisc.edu!ames!pacbell.com!UB.com!pippen.ub.com!rfries
  3. From: rfries@sceng.ub.com (Robert Fries)
  4. Subject: Re: Rounding floats to integers
  5. Message-ID: <rfries.123@sceng.ub.com>
  6. Sender: news@pippen.ub.com (The Daily News)
  7. Nntp-Posting-Host: 128.203.1.151
  8. Organization: Ungermann Bass
  9. References: <92314.134711IA8@psuvm.psu.edu>
  10. Date: Tue, 10 Nov 1992 14:16:22 GMT
  11. Lines: 28
  12.  
  13. In article <92314.134711IA8@psuvm.psu.edu> IA8@psuvm.psu.edu (Alan R. Heyd) writes:
  14.  
  15. >What I do now is add 0.5 to the float before it is converted to
  16. >an integer, for example:
  17.  
  18. To round to NEAREST integer, you'd have to test if fractional part is less 
  19. than 0.5; if YES, drop fractional part, if NO, add 0.5, then drop fraction.
  20. You'd also get to choose what to do if fractional part is EXACTLY 0.5.
  21.  
  22. Off the top of my head:
  23.  
  24. int round(float v)
  25. {
  26.     if ((v - (int)v) < 0.5)    // use '<=' if 0.5 should round down
  27.         return (int)v;        
  28.     return (int)(v+0.5);     
  29. }    
  30.  
  31. Robert
  32.  
  33. //////////////////////////////////////////////////////////////////////////
  34. Robert Fries
  35. Ungermann-Bass Inc.
  36.  
  37. DISCLAIMER:
  38.     Opinions contained herein are my own, and are not necessarily those
  39.     of Ungermann-Bass.
  40. //////////////////////////////////////////////////////////////////////////
  41.