設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊(cè)

QQ登錄

只需一步,快速開始

返回列表 發(fā)新帖
查看: 2893|回復(fù): 1
打印 上一主題 下一主題

[表] Access中使用單精度與雙精度字段類型的問題

[復(fù)制鏈接]

點(diǎn)擊這里給我發(fā)消息

跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2016-9-28 10:11:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
在Access中使用單精度/雙精度數(shù),或使用Access鏈接到Sql server的Float(實(shí)數(shù))都會(huì)存在一個(gè)近似數(shù)的問題,明明是一個(gè)1位或2位小數(shù)的數(shù)值,但表中保存的卻是一大串?dāng)?shù)值。那如何解決這個(gè)問題呢?


單精度/雙精度數(shù)值類型從一開始設(shè)計(jì)的時(shí)候,就不是一個(gè)準(zhǔn)確的數(shù)值類型,他只保證在他這個(gè)數(shù)值類型的精度之內(nèi)是準(zhǔn)確的,精度之外則不保證,比方說,一個(gè)數(shù)值5.1,很可能存儲(chǔ)在單精度/雙精度數(shù)值中的實(shí)際值是5.100000000001或者5.09999999999999。導(dǎo)致這個(gè)現(xiàn)象的原因我們可以通過兩種方式來解釋:

你可以嘗試在任何一個(gè)控件的屬性面板中,設(shè)定他的寬度為:3.2CM,當(dāng)你輸入完畢后,你會(huì)發(fā)現(xiàn)值自動(dòng)變成了3.199cm,無論你怎么改,你都無法輸入3.200CM,因?yàn)閷?shí)際上在電腦中存儲(chǔ)的并不是CM為單位的數(shù)值,而是“緹”為單位的數(shù)值,而“緹”和CM之間的比值,是個(gè)很難被除盡的數(shù),因此你輸入完畢后,電腦自動(dòng)轉(zhuǎn)換成了最接近的“緹”值,然后再轉(zhuǎn)換成厘米顯示到屬性面板上,這一乘一除,兩次四舍五入,誤差就出來了。單精度/雙精度也是類似的原理,其實(shí)在二進(jìn)制存儲(chǔ)的時(shí)候,單精度/雙精度都采用了類似相近分?jǐn)?shù)的方法,而這樣的存儲(chǔ)是不可能做到準(zhǔn)確的。



那在Access中使用單精度/雙精度數(shù)要注意什么呢
1.如果的確要使用單精度/雙精度數(shù),在使用時(shí),可根據(jù)需要使用Round或Format 截取你需要的小數(shù)位數(shù)
2.數(shù)值判斷時(shí)也可使用>  <  , >=,<= 這樣
3.如果數(shù)字不是非常大,且小數(shù)位數(shù)不多,建議采用貨幣類型(Money) ,或 小數(shù)類型(Decimal)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2016-9-29 00:33:37 | 只看該作者
對(duì)于浮點(diǎn)型數(shù)據(jù),我所知道的編程語言都沒有解決得很好。當(dāng)浮點(diǎn)數(shù)和整型相加時(shí)常常出現(xiàn)這種那種問題。
---------------------------------------------
忽然想起一個(gè)笑話:
有人去參加恐龍博物館,問某只恐龍多少年了。
講解員說,這只恐龍有一億零一十三年了。
游客問,你怎么知道得這么清楚?
講解員說,我來的時(shí)候,上個(gè)講解員告訴我,這只恐龍生活在一億年前,現(xiàn)在我在這里工作十三年了,所以是一億零一十三年。
---------------------------------------------
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機(jī)版|Office中國/Access中國 ( 粵ICP備10043721號(hào)-1 )  

GMT+8, 2024-10-23 08:28 , Processed in 0.104443 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表