作者 主題: C++裡面要怎麼寫4捨5入  (閱讀 7069 次)

0 會員 與 1 訪客 正在閱讀本文。

被騎上班的老

  • 酷!學園 學長們
  • 活潑的大學生
  • ***
  • 文章數: 360
    • 檢視個人資料
C++裡面要怎麼寫4捨5入
« 於: 2002-06-25 13:53 »
發信人: WPC.bbs@sparc20.ee.cycu.edu.tw (╮(╯_╰)
日期: 16 Jun 2002 16:12:28 GMT
標題: Re: 請問C++裡面要怎麼寫4捨5入
信群: tw.bbs.comp.sources    看板: sources
來源: <40jMFT$Y9A@sparc20.ee.cycu.edu.tw>:7924, sparc20.ee.cycu.edu.tw
組織: 中原電機站


C裡頭... 只有無條件捨去喔..

所以你先給他偷偷加個0.5
y = (int)(x+0.5);

這才是正確的做法~~

--
※ Origin: 中原電機心站 ◆ From: a73.ieo.nctu.edu.tw
--
Origin: 中原電機心站 bbs.ee.cycu.edu.tw (140.135.12.1)

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7311
    • 檢視個人資料
C++裡面要怎麼寫4捨5入
« 回覆 #1 於: 2002-06-25 14:05 »
這到是個好方法,
以前學校都教用比對餘數大小的方式!

protech

  • 活潑的大學生
  • ***
  • 文章數: 322
  • 性別: 男
    • 檢視個人資料
C++裡面要怎麼寫4捨5入
« 回覆 #2 於: 2002-07-01 17:02 »
clipper 5.3a 之前的 round 有 bug 都會誤算 ..

這個 function 是當時用來解決的 ...

當時有問過 CA 他們說這個是 MS-C 7.0 前的 bug ... :-?

給大家參考一下吧 ...


FUNCTION Xround( x , y )                    
                                           
   DEFAULT y TO 2                          
                                           
   IF x >= 0                                
      x := INT( x*10**y + .50001 ) / 10**y  
   ELSE                                    
      x := INT( x*10**y - .50001 ) / 10**y  
   ENDIF                                    
                                           
   RETURN ( x )