久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2384|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)keil_C51如何返回NaN

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1043747 發(fā)表于 2022-11-27 14:56 來(lái)自觸屏版 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我有一個(gè)返回浮點(diǎn)數(shù)的函數(shù),當(dāng)有錯(cuò)時(shí),我想返回NaN,多謝大家!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2022-11-27 16:53 | 只看該作者
通過(guò)串口發(fā)“NaN”。
回復(fù)

使用道具 舉報(bào)

板凳
ID:526108 發(fā)表于 2022-11-27 17:30 | 只看該作者
#define NaN 0xFFFFFFFF
回復(fù)

使用道具 舉報(bào)

地板
ID:1043747 發(fā)表于 2022-11-27 18:05 來(lái)自觸屏版 | 只看該作者
qq624353765 發(fā)表于 2022-11-27 17:30
#define NaN 0xFFFFFFFF

多謝 好像不行

2022-11-27_175832.png (131.76 KB, 下載次數(shù): 98)

2022-11-27_175832.png
回復(fù)

使用道具 舉報(bào)

5#
ID:1043747 發(fā)表于 2022-11-27 20:42 來(lái)自觸屏版 | 只看該作者
xuyaqi 發(fā)表于 2022-11-27 16:53
通過(guò)串口發(fā)“NaN”。

我要返回給調(diào)用者
回復(fù)

使用道具 舉報(bào)

6#
ID:384109 發(fā)表于 2022-11-27 23:29 | 只看該作者
你應(yīng)該先看懂說(shuō)明文檔中這個(gè)函數(shù)怎么用,你用錯(cuò)了
回復(fù)

使用道具 舉報(bào)

7#
ID:1043747 發(fā)表于 2022-11-28 12:40 來(lái)自觸屏版 | 只看該作者
人中狼 發(fā)表于 2022-11-27 23:29
你應(yīng)該先看懂說(shuō)明文檔中這個(gè)函數(shù)怎么用,你用錯(cuò)了

那該怎么用
回復(fù)

使用道具 舉報(bào)

8#
ID:155507 發(fā)表于 2022-11-28 19:19 | 只看該作者
應(yīng)該是。
int NaN = 0x7F800001;
回復(fù)

使用道具 舉報(bào)

9#
ID:883242 發(fā)表于 2022-11-28 20:29 | 只看該作者
很奇怪的問(wèn)題,一個(gè)返回浮點(diǎn)數(shù)的函數(shù),當(dāng)有錯(cuò)時(shí),它就是返回NaN的,不是你想返回的。把函數(shù)返回值用_check_float_()查一下就行了,為什么要自己定義?
回復(fù)

使用道具 舉報(bào)

10#
ID:1043747 發(fā)表于 2022-11-28 20:45 來(lái)自觸屏版 | 只看該作者
Hephaestus 發(fā)表于 2022-11-28 20:29
很奇怪的問(wèn)題,一個(gè)返回浮點(diǎn)數(shù)的函數(shù),當(dāng)有錯(cuò)時(shí),它就是返回NaN的,不是你想返回的。把函數(shù)返回值用_check_ ...

因?yàn)檫@個(gè)返回浮點(diǎn)數(shù)的函數(shù)是我寫的
回復(fù)

使用道具 舉報(bào)

11#
ID:384109 發(fā)表于 2022-11-28 22:20 | 只看該作者
樓主用錯(cuò)函數(shù)了吧,_chkfloat_()本身就是一個(gè)檢測(cè)浮點(diǎn)數(shù)的函數(shù),你所說(shuō)的NaN本身就是這個(gè)函數(shù)的其中一個(gè)返回值,還是先看看C語(yǔ)言有關(guān)函數(shù)的知識(shí)吧
回復(fù)

使用道具 舉報(bào)

12#
ID:883242 發(fā)表于 2022-11-29 03:38 | 只看該作者
angmall 發(fā)表于 2022-11-28 19:19
應(yīng)該是。
int NaN = 0x7F800001;


NaN的31位符號(hào)位是0或1無(wú)所謂,30~24位階碼必須全部是1,23~0位尾數(shù)只要是非零即可,所以板凳的答案也是對(duì)的,0xffffffff也是NaN。
回復(fù)

使用道具 舉報(bào)

13#
ID:883242 發(fā)表于 2022-11-29 03:59 | 只看該作者
censv 發(fā)表于 2022-11-28 20:45
因?yàn)檫@個(gè)返回浮點(diǎn)數(shù)的函數(shù)是我寫的

那就是說(shuō)其實(shí)你算出來(lái)的不是NaN,但是你算出來(lái)的結(jié)果按照你的項(xiàng)目需求有個(gè)合理范圍,如果超過(guò)這個(gè)范圍你就要把結(jié)果一律轉(zhuǎn)換成NaN的意思嗎?如果是的話,那么你在地板位的代碼第9行很有問(wèn)題,因?yàn)開(kāi)chkfloat_函數(shù)的參數(shù)是float,而你填寫了0xffffffff,編譯器應(yīng)該轉(zhuǎn)換成4.295e9的浮點(diǎn)數(shù)送進(jìn)去,當(dāng)然不是NaN了。

我寫了個(gè)測(cè)試代碼,在MinGW上面編譯通過(guò):
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>
  4. #include <math.h>

  5. int main(int argc, char *argv[]) {
  6.         float *f;
  7.         uint32_t i=0xffffffff;
  8.         f=(float*)&i;
  9.         if(__isnanf(*f))printf("\r\nstep1 NaN.");
  10.         i=0x0;
  11.         if(__isnanf(*f))printf("\r\nstep1 NaN.");
  12.         return 0;
  13. }
復(fù)制代碼


關(guān)鍵一句:f=(float*)&i;
只有這么寫,才能保證f的十六進(jìn)制是0xffffffff,而不是對(duì)應(yīng)的相同大小的浮點(diǎn)數(shù)。
回復(fù)

使用道具 舉報(bào)

14#
ID:1043747 發(fā)表于 2022-11-29 08:02 來(lái)自觸屏版 | 只看該作者
Hephaestus 發(fā)表于 2022-11-29 03:59
那就是說(shuō)其實(shí)你算出來(lái)的不是NaN,但是你算出來(lái)的結(jié)果按照你的項(xiàng)目需求有個(gè)合理范圍,如果超過(guò)這個(gè)范圍你 ...

多謝幫助,你是個(gè)天使
回復(fù)

使用道具 舉報(bào)

15#
ID:77589 發(fā)表于 2022-11-30 14:17 | 只看該作者


從你的圖片上明顯可以看出“NaN”的值應(yīng)該為4,這里可以用兩種方法解決。
一、定義宏來(lái)解決
#define  STD_FLOAT    0
#define  ZERO             1
#define  POS_OF         2
#define  NEG_OF         3
#define  NaN               4
二、定義枚舉來(lái)解決
typedef enum {
    STD_FLOAT = 0,
    ZERO = 1,
    POS_OF = 2,
    NEG_OF = 3,
    NaN = 4,
} ResultType_t;
因?yàn)槟愕暮瘮?shù)是返回的unsigned char, 所以用了這種方法,會(huì)出現(xiàn)數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換;如果不想數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換,就把函數(shù)返回類型由unsigned char修改成ResultType_t。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩手机视频 | 精品视频一区二区三区在线观看 | 久久99视频这里只有精品 | 日韩一区二区三区在线视频 | 91免费电影 | 97av| 最近中文字幕第一页 | 99精品在线观看 | 日本高清aⅴ毛片免费 | 一区在线观看 | 久久久久国产 | 亚洲风情在线观看 | 亚洲一区二区三区四区五区午夜 | www.99热.com| 亚洲一区二区精品视频 | aaa大片免费观看 | 国产精品视频一区二区三区不卡 | 婷婷色国产偷v国产偷v小说 | 91精品国产一区二区三区 | 亚洲91 | 久久乐国产精品 | 老外几下就让我高潮了 | 蜜桃一区 | 一级黄色片一级黄色片 | 国产h视频| 精品视频在线观看 | 免费观看成人性生生活片 | 少妇一区二区三区 | 日韩中文字幕 | 欧美日韩精品久久久免费观看 | 黄色成人免费看 | 成人小视频在线观看 | 国产午夜视频 | 日日夜夜天天 | 国产精品一区久久久 | 2021狠狠干 | 欧美精品片 | 日本免费在线 | 精品99爱视频在线观看 | 伦理午夜电影免费观看 | 四虎国产|