1樓:我得改個名
1. 被修約的數字小於5時,該數字捨去;
2. 被修約的數字大於5時,則進製;
3. 被修約的數字等於5時,要看5前面的數字,若是奇數則進製,若是偶數則將5捨掉,即修約後末尾數字都成為偶數;若5的後面還有不為「0」的任何數,則此時無論5的前面是奇數還是偶數,均應進製。
實際上1.除了情況3,還是按照四捨五入的規則來,可以用round
2.情況3是什麼個情況?
同時滿足
(1)保留小數後面等於5,(不是後面一位)
(2)捨入後結果為偶數
以保留2位為例:
And(x*1000-int(x*100)*10=5,isodd(round(x,2)*100))
要問為什麼第乙個條件要費勁搞成5,因為涉及到浮點運算,用小數去比較結果很詭異,原理我也不懂,反正是會出錯的。
第二個條件,尾數5,正常四捨五入結果是奇數,那5前面就是偶數咯。
所以:If( And(x*1000-int(x*100)*10=5,isodd(round(x)*100)),round(x,2) -1/100,round(x,2))
202104更新
又看到這個問題,15年答的
有乙個新的思路,公式更簡潔一些。
在有round以前,我們四捨五入都是用int。比如保留2位小數
int(n*100+0.5)/100
前面分析了,不是5結尾的跟四捨五入規則一樣
是5結尾,那不就是加0.5取整是個整數,原來前面是奇數的,加0.5就是偶數。
所以加0.5是奇數,減1後還原小數點,反之不用處理。乙個 if
=if(isodd(int(n*100+0.5)),
int(n*100+0.5-1)/100,
int(n*100+0.5)/100)
四捨五入究竟先取絕對值,還是直接根據大小?
傍白 四捨五入所做的事情有兩種簡單理解,四捨是讓數字靠近0,五入是讓數字遠離0。四捨是讓數字變小,五入是讓數字變大。兩種理解對單個正數的處理結果是相同的,對單個負數的處理結果是相反的。縱觀正負領域,理解2雖然在程式上看起來更具一貫性,在負數領域,其操作和結果的對應卻是反直觀的。0.5有些曖昧,把目標...
STL中queue能壓入多少資料?
Zbtrik queue底層預設是用了deque,容量理論上只跟你機器記憶體有關。以前32位linux程序大約可用3G的空間,現在64位基本上可用128T,但實際記憶體一般沒這麼多 bluetrees 一定會有人給你乙個很精確的數字,我來說個偏門的,但我覺得有用。尾遞迴消除。舉個例子,階乘 func...
行政都應該知道的省錢訣竅,四捨五入省下一套房!
唐小色 我的是堅持運動,保持積極情緒,兩方面。並不是把自己走神拉回來的方法,更像是讓自己不要走神,並降低 拉回注意力的難度 就這樣。下面都是廢話,全部可以不看。個人崇尚學不進就不學,不能拉低自己的學習愉悅感。然後就只能啃老。嗯。所以才想到要做一些不太切題的改變。針對我個人,現在自己是從生理和心理兩個...