標(biāo)題:
提高浮點(diǎn)數(shù)變整數(shù)的精度 這個(gè)方法很不錯(cuò)
[打印本頁(yè)]
作者:
51黑科研
時(shí)間:
2016-5-11 04:24
標(biāo)題:
提高浮點(diǎn)數(shù)變整數(shù)的精度 這個(gè)方法很不錯(cuò)
在我們的產(chǎn)品設(shè)計(jì)中,經(jīng)常會(huì)遇到浮點(diǎn)數(shù)變整數(shù)的時(shí)候,那么,我們首先看看,浮點(diǎn)數(shù)變整數(shù)的精度如何?
實(shí)驗(yàn)一:
分別定義一個(gè)浮點(diǎn)數(shù)26.6和26.4,把這個(gè)數(shù)強(qiáng)制轉(zhuǎn)換成整數(shù)后,是多少?
下面是我做實(shí)驗(yàn)用的程序:
按理說(shuō),或者說(shuō),我們希望的結(jié)果,應(yīng)該是四舍五入的27和26,但是實(shí)際上....
十六進(jìn)制的1A,就是十進(jìn)制的26.
我們看到了,結(jié)果是程序只取了整數(shù)部分,小數(shù)部分根本沒(méi)有給我們四舍五入。
解決辦法:
只要你的腦袋瓜聰明,可以想出很多解決。
下面我說(shuō)一下我的解決辦法:
實(shí)驗(yàn)二:
利用modf函數(shù),把小數(shù)和整數(shù)分離出來(lái),如果小數(shù)小于0.5,就直接取整,如果小數(shù)大于等于0.5,就整數(shù)+1.
用modf函數(shù),需要調(diào)用頭文件math.h
最后輸出的結(jié)果是:
十六進(jìn)制的1B和1A轉(zhuǎn)換成十進(jìn)制,就是27和26,這時(shí)候,結(jié)果就和我們想要的一樣了。
你能想出更簡(jiǎn)便的辦法來(lái)嗎?想出來(lái)的話,不防分享到微信論壇,點(diǎn)擊文章后面的【閱讀原文】就可以進(jìn)入論壇了。
作者:
mcza30
時(shí)間:
2016-5-12 09:35
u16 ix,iy;
float x=26.6,y=26.4;
ix=x+0.5;
iy=y+0.5;
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1