台灣最大程式設計社群網站
線上人數
733
 
會員總數:231034
接案會員:6779
文章總數:2319
討論主題:175382
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 四捨五入的問題
[變換順序]
[我要回覆]
1


回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
四捨五入的問題
價值 : 20 QP  點閱數:2935 回應數:6

樓主

Tina
門外漢
0 20
724 37
發送站內信

各位大大好
請教一個問題,我有一段語法如下
project_business_tax2 = project_price2.text * 0.05
project_business_tax.text = project_business_tax2.ToString("0")
大多數計算出來四捨五入的數值是正確的
但偶而會出現四捨五入錯誤的情況
例如project_price2.text的數值若為55770 時,*0.05以後會變成2788,但正確四捨五入後應為2789才對
不知應如何修改才能算出正確的四捨五入值
煩請大大們賜教,謝謝
本篇文章發表於2009-01-20 21:06
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Mark Shu
捐贈 VP 給 Mark Shu 檢舉此回應



本篇文章回覆於2009-01-20 21:27
--未登入的會員無法查看對方簽名檔--
2樓
回應

達可達
檢舉此回應
應該是四捨"六"入,五要看心情,呵,五要看前面是奇還是偶(這樣比較公平)
之前看書,看到書上寫四捨六入
還以為是書印錯,還用筆給它訂正
後來才知是四捨六入沒錯...
而遇到五則是是看前面位數是奇數還是偶數前面是奇數才進位,偶數就捨位
ex:
Console.WriteLine( Math.Round( 3.5 ) ); //奇數進位 4
Console.WriteLine( Math.Round( 4.5 ) ); //偶數捨位 4

Console.WriteLine( Decimal.Round( 3.5m, 0) ); // 同上 4
Console.WriteLine( Decimal.Round( 4.5m, 0) ); // 4

要四捨五入可能要自己寫程式 :)

本篇文章回覆於2009-01-20 22:05
--未登入的會員無法查看對方簽名檔--
3樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
一個口訣
四捨六入五成雙

本篇文章回覆於2009-01-21 08:41
--未登入的會員無法查看對方簽名檔--
4樓
回應

yilin
檢舉此回應
在強制轉型成int前加上0.5.
例如:
project_business_tax2 = project_price2.text * 0.05 + 0.5

本篇文章回覆於2009-01-21 09:31
--未登入的會員無法查看對方簽名檔--
5樓
最有價值解答

Allen
捐贈 VP 給 Allen 檢舉此回應
也可以參考
http://www.allenkuo.com/EBook5/view.aspx?TreeNodeID=27&id=381

本篇文章回覆於2009-01-21 10:12
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Tina
檢舉此回應
感謝各位的回覆,讓我了解原來是因為四捨六入的問題
我使用了Allen的方法,已解決了此問題
謝謝大家
修改後語法如下:
project_business_tax2 = project_price2.text * 0.05
project_business_tax.text = math.round(project_business_tax2,MidpointRounding.AwayFromZero)


本篇文章回覆於2009-01-21 13:25
--未登入的會員無法查看對方簽名檔--
[變換順序]
1
 

回覆
如要回應,請先登入.