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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機keil_C51如何返回NaN

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

地板
ID:1043747 發(fā)表于 2022-11-27 18:05 來自手機 | 只看該作者
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ù)

使用道具 舉報

5#
ID:1043747 發(fā)表于 2022-11-27 20:42 來自手機 | 只看該作者
xuyaqi 發(fā)表于 2022-11-27 16:53
通過串口發(fā)“NaN”。

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

使用道具 舉報

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

使用道具 舉報

7#
ID:1043747 發(fā)表于 2022-11-28 12:40 來自手機 | 只看該作者
人中狼 發(fā)表于 2022-11-27 23:29
你應(yīng)該先看懂說明文檔中這個函數(shù)怎么用,你用錯了

那該怎么用
回復(fù)

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

10#
ID:1043747 發(fā)表于 2022-11-28 20:45 來自手機 | 只看該作者
Hephaestus 發(fā)表于 2022-11-28 20:29
很奇怪的問題,一個返回浮點數(shù)的函數(shù),當(dāng)有錯時,它就是返回NaN的,不是你想返回的。把函數(shù)返回值用_check_ ...

因為這個返回浮點數(shù)的函數(shù)是我寫的
回復(fù)

使用道具 舉報

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

使用道具 舉報

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


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

使用道具 舉報

13#
ID:883242 發(fā)表于 2022-11-29 03:59 | 只看該作者
censv 發(fā)表于 2022-11-28 20:45
因為這個返回浮點數(shù)的函數(shù)是我寫的

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

我寫了個測試代碼,在MinGW上面編譯通過:
  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的十六進制是0xffffffff,而不是對應(yīng)的相同大小的浮點數(shù)。
回復(fù)

使用道具 舉報

14#
ID:1043747 發(fā)表于 2022-11-29 08:02 來自手機 | 只看該作者
Hephaestus 發(fā)表于 2022-11-29 03:59
那就是說其實你算出來的不是NaN,但是你算出來的結(jié)果按照你的項目需求有個合理范圍,如果超過這個范圍你 ...

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

使用道具 舉報

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


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色片一级黄色片 | 日韩在线观看 | 夜夜草视频 | 天天操天天天干 | 亚洲精品欧美 | 中文字幕一区二区三区四区五区 | 国产精久久久久久久 | 国产激情福利 | 本地毛片 | 欧美日韩久久久久 | 日本高清不卡视频 | 久久人人网 | 国产精品亚洲成在人线 | 午夜在线精品 | 亚洲国产精品成人久久久 | 久久久亚洲一区 | 操操操av | 日韩高清中文字幕 | 不卡的av在线 | 91精品久久久久久久久99蜜臂 | 欧洲免费毛片 | 黄色永久免费 | 二区高清 | 中文字幕综合 | 极情综合网| 久久国产精品一区二区三区 | av片网站 | 99re视频在线观看 | 日韩在线免费播放 | 精品一区二区在线视频 | 国产精品久久久久一区二区三区 | 日韩精品一区二区三区中文在线 | 亚洲综合中文字幕在线观看 | 国产福利在线 | 久久久蜜桃一区二区人 | 欧美日韩国产传媒 | 一色桃子av一区二区 | 亚洲精品v| 午夜一区| 激情伊人网| 成人免费高清 |