找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3031|回復: 1
打印 上一主題 下一主題
收起左側(cè)

提高浮點數(shù)變整數(shù)的精度 這個方法很不錯

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:119948 發(fā)表于 2016-5-11 04:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
在我們的產(chǎn)品設(shè)計中,經(jīng)常會遇到浮點數(shù)變整數(shù)的時候,那么,我們首先看看,浮點數(shù)變整數(shù)的精度如何?

實驗一:分別定義一個浮點數(shù)26.6和26.4,把這個數(shù)強制轉(zhuǎn)換成整數(shù)后,是多少?

下面是我做實驗用的程序:





按理說,或者說,我們希望的結(jié)果,應(yīng)該是四舍五入的27和26,但是實際上....



十六進制的1A,就是十進制的26.

我們看到了,結(jié)果是程序只取了整數(shù)部分,小數(shù)部分根本沒有給我們四舍五入。

解決辦法:

只要你的腦袋瓜聰明,可以想出很多解決。

下面我說一下我的解決辦法:

實驗二:利用modf函數(shù),把小數(shù)和整數(shù)分離出來,如果小數(shù)小于0.5,就直接取整,如果小數(shù)大于等于0.5,就整數(shù)+1.

用modf函數(shù),需要調(diào)用頭文件math.h




最后輸出的結(jié)果是:



十六進制的1B和1A轉(zhuǎn)換成十進制,就是27和26,這時候,結(jié)果就和我們想要的一樣了。

你能想出更簡便的辦法來嗎?想出來的話,不防分享到微信論壇,點擊文章后面的【閱讀原文】就可以進入論壇了。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:83553 發(fā)表于 2016-5-12 09:35 | 只看該作者
u16 ix,iy;
float x=26.6,y=26.4;

ix=x+0.5;
iy=y+0.5;
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表