台灣最大程式設計社群網站
線上人數
1121
 
會員總數:240373
討論主題:186362
歡迎您免費加入會員
討論區列表 >> ACCESS >> 小數點運算與EXECL不同,為什麼呢?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
小數點運算與EXECL不同,為什麼呢?
價值 : 500 QP  點閱數:1376 回應數:6

樓主

JasonJhong
初學者
317 101
2083 235
發送站內信

捐贈 VP 給 JasonJhong
各位大大,請教各位

小弟資料表myTable如下
TM FMfactor
16.97 1.22026
=============================
SELECT TM, 100-TM AS A FROM myTable

TM A
16.97 83.0300006866455

為什麼呢? A不是應該為83.03嗎?
============================
SELECT TM ,FMfactor,TM*FMfactor AS C FROM myTable;
TM FMfactor C
16.97 1.22026 20.7078113555908

為什麼C計算結果
access是 20.7078113555908
execl 是 20.7078122000000

ACCESS算起來好像怪怪的
謝謝

搜尋相關Tags的文章: [ 小數點運算 ] ,
本篇文章發表於2015-12-21 10:28
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

P陳
檢舉此回應
這要牽涉到數值精度問題了
您改一下用倍精準的數字重算一下,會有不同的結果


ACCESS 當算到取整數時 12.5 取整數時是12 但13.5卻會變成14(奇進偶不進)
而 Excel 卻又是 4捨5入。這些都是數學家搞的鬼

就造成 諾貝爾先生 不頒數學獎的原因了
本篇文章回覆於2015-12-21 20:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

P陳
檢舉此回應
如果您對小數位很要求時,千萬不要用 單精 或 倍精
本篇文章回覆於2015-12-21 20:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
單精準數或雙精準數的運算,可能會產生不是預期結果,若要改善這種狀況
在ACCESS的VBA模組,可以加上自寫的FUNCTION,來改善
例如以下簡單FUNCTION程式碼,處理單精準數加減

SELECT TM, 100-TM AS A FROM myTable
就可以改為
SELECT TM, doSubtract(100,TM) AS A FROM myTable
這樣就可以產生預期結果
同理乘法也是可以,只是要自己寫個Function
本篇文章回覆於2015-12-22 09:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

羅伯斯
檢舉此回應
Access 的數值四捨五入,並沒有錯
只是它用不是我們一般數學的計算規則
它採用的是的是銀行業的計算規則

進不進位,看要進位的前一位數值
若為偶數則直接捨去,若為奇數才會進位

若是讓 Access 的數值四捨五入
跟我們一般數學的計算規則一樣
可用以下方式解決

<pre lang="vb">
'//整數以下四捨五入
Int(46410*0.05+0.5)=2321

'//12.346 四捨五入至小數點以下一位
Int(12.346*10+0.5)/10=12.3

'//12.346 四捨五入至小數點以下二位
Int(12.346*100+0.5)/100=12.35

'//12.3466 四捨五入至小數點以下三位
Int(12.3466*1000+0.5)/1000=12.357
本篇文章回覆於2016-05-07 15:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
這問題在Access 2.0版時我就打電話去微軟問過,微軟的回答是:「單精數、倍精數小數點本來就不準,小數點要精準請改用貨幣。」
本篇文章回覆於2016-06-01 16:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

羅伯斯
檢舉此回應
to: 羅斯威爾事件

個人覺的回覆你的微軟客服人員,回答的並不算精確
雖然改用貨幣型態可以讓小數點精確但
若欄位本身必須是數字型態,改用貨幣型態,顯示時會有困擾
Access 預設貨幣型態的資料,顯示時會自動加上貨幣符號(如:NT$)
必須把該欄位的控制項"格式"屬性改為"標準"

個人認為 Access 對數字的四捨五入,採用的是的是銀行業的計算規則說法較為正確
銀行業對小數以下的位數的四捨五入,何以要視個位數,單數進位,偶數捨去的作法
個人不是銀行業人員,並不清楚,這個問題或許銀行業的人都無法回答
有可能是早期歐美銀行業的慣例沿習下來的(必竟銀行是從歐美起源)





本篇文章回覆於2016-06-20 15:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

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