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

QQ登錄

只需一步,快速開始

搜索

c語(yǔ)言如何用宏取一個(gè)小數(shù)的分子?

查看數(shù): 2921 | 評(píng)論數(shù): 19 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁(yè)<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2022-11-29 11:24

正文摘要:

多謝大家?guī)椭?/p>

回復(fù)

ID:1043747 發(fā)表于 2022-11-30 22:17
lkc8210 發(fā)表于 2022-11-30 11:08
那么numerator只能用函數(shù)來(lái)算

多謝你的幫助,開心每一天
ID:401564 發(fā)表于 2022-11-30 19:34
censv 發(fā)表于 2022-11-29 18:41
比如fraction定義為0.5,那么numerator則為1(1/2的分子)

你還不如說(shuō)你要干嘛好點(diǎn)
不要想當(dāng)然的認(rèn)為一個(gè)問(wèn)題可以“這樣”解決,然后就問(wèn)要怎么樣都能達(dá)到“這樣”的效果
0.1 0.2 0.3 0.4 0.5
哪個(gè)分子不是1,你不管分母,只管分子,這有什么意義呀?
ID:161164 發(fā)表于 2022-11-30 11:08
censv 發(fā)表于 2022-11-30 09:55
625是在11.0592MHz下精確的最小整數(shù)時(shí)間(單位us)

那么numerator只能用函數(shù)來(lái)算
  1. long Find_numerator(long dat)
  2. {
  3. char PP[3] = {2,3,5},i,j;
  4. long Mhz12 = 12000000;
  5. for(i=0;i<3;i++)
  6. {
  7.      j=100;
  8.      while(j--)
  9.      {
  10.         if(dat%PP[i]==0 && Mhz12%PP[i]==0)
  11.         {
  12.             dat/=PP[i];
  13.             Mhz12/=PP[i];
  14.         }else
  15.         {
  16.             break;
  17.         }
  18.      }
  19. }
  20. return dat;
  21. }
復(fù)制代碼



ID:1043747 發(fā)表于 2022-11-30 09:55
Hephaestus 發(fā)表于 2022-11-29 22:41
你的這個(gè)數(shù)本身就沒(méi)有意義,12000000/11059200去掉公約數(shù),化簡(jiǎn)成兩個(gè)互質(zhì)數(shù)比值625/576,那么625的物理 ...

625是在11.0592MHz下精確的最小整數(shù)時(shí)間(單位us)
ID:384109 發(fā)表于 2022-11-30 09:53
樓主沒(méi)明白自己想要得到什么,也沒(méi)明白#define是什么用法
ID:77589 發(fā)表于 2022-11-30 09:42
在C語(yǔ)言中,無(wú)論是整形數(shù)還是浮點(diǎn)數(shù),都不可以能以分號(hào)的形式保存,即使你寫成a/b的形式,編譯器都會(huì)給你計(jì)算出具體的結(jié)果的。所以你的想法,應(yīng)該是不能實(shí)現(xiàn)的。只能通過(guò)其他方法來(lái)實(shí)現(xiàn)。
ID:883242 發(fā)表于 2022-11-29 22:41
censv 發(fā)表于 2022-11-29 21:42
多謝幫助,給我了個(gè)確定的答案

你的這個(gè)數(shù)本身就沒(méi)有意義,12000000/11059200去掉公約數(shù),化簡(jiǎn)成兩個(gè)互質(zhì)數(shù)比值625/576,那么625的物理意義是什么?如果這個(gè)問(wèn)題說(shuō)不清,那么625這個(gè)數(shù)據(jù)就是毫無(wú)意義的。
ID:1043747 發(fā)表于 2022-11-29 21:42
Hephaestus 發(fā)表于 2022-11-29 21:14
樓主的意思是12/11.0592化簡(jiǎn)為625/576這兩個(gè)沒(méi)有公倍數(shù)的數(shù)值的比值。但是公約數(shù)公倍數(shù)本身就是純粹的整數(shù) ...

多謝幫助,給我了個(gè)確定的答案
ID:1043747 發(fā)表于 2022-11-29 21:29
人中狼 發(fā)表于 2022-11-29 20:22
為什么不能numerator = 1,然后fraction = numerator / 2呢

因?yàn)閚umerator的值取決于fraction
ID:883242 發(fā)表于 2022-11-29 21:14
樓主的意思是12/11.0592化簡(jiǎn)為625/576這兩個(gè)沒(méi)有公倍數(shù)的數(shù)值的比值。但是公約數(shù)公倍數(shù)本身就是純粹的整數(shù)的概念,如果輸入是浮點(diǎn)數(shù),那么就是無(wú)解的。樓主可以手?jǐn)]出答案,但是在計(jì)算機(jī)上面不可能復(fù)現(xiàn),因?yàn)?1.0592在計(jì)算機(jī)內(nèi)部浮點(diǎn)格式中,總是有誤差的,不可能準(zhǔn)確,自然無(wú)論如何也不可能算出結(jié)果。

題目本身就是大錯(cuò)特錯(cuò),大家散了吧。
ID:624769 發(fā)表于 2022-11-29 21:10
censv 發(fā)表于 2022-11-29 18:41
比如fraction定義為0.5,那么numerator則為1(1/2的分子)

那么numerator 永遠(yuǎn)是1, 無(wú)論你 fraction 是多少。
即便,fraction = 2,  numerator 也可以 =1, (1/0.5 的分子)
ID:824490 發(fā)表于 2022-11-29 21:00
censv 發(fā)表于 2022-11-29 18:38
因?yàn),該值編譯時(shí)可確定,我不想有運(yùn)行開銷

既然該值編譯時(shí)可確定,為什么不直接定義?還要想著如何計(jì)算、如何列個(gè)公式不麻煩?
如:
//#define frq  11592000
//#define frq  12000000
#define frq  24000000

#if (frq ==11592000)
   #define circle  0
#endif

#if (frq ==12000000)
   #define circle  1
#endif

#if (frq ==24000000)
   #define circle  2
#endif
需要哪個(gè)frq,把其它的注釋掉就OK了。
ID:384109 發(fā)表于 2022-11-29 20:22
為什么不能numerator = 1,然后fraction = numerator / 2呢
ID:1043747 發(fā)表于 2022-11-29 18:41
Y_G_G 發(fā)表于 2022-11-29 15:35
取一個(gè)小數(shù)的分子?這個(gè)時(shí)候分母在干嘛?
這是什么意思?
是我文化太低還是問(wèn)題太深?yuàn)W?

比如fraction定義為0.5,那么numerator則為1(1/2的分子)
ID:1043747 發(fā)表于 2022-11-29 18:38
名字不是重點(diǎn) 發(fā)表于 2022-11-29 16:57
宏并不能節(jié)省空間,而一些復(fù)雜的功能可以用函數(shù)來(lái)做,所以你為什么不做一個(gè)你想要的功能的函數(shù)呢?

因?yàn),該值編譯時(shí)可確定,我不想有運(yùn)行開銷
ID:824490 發(fā)表于 2022-11-29 16:57
宏并不能節(jié)省空間,而一些復(fù)雜的功能可以用函數(shù)來(lái)做,所以你為什么不做一個(gè)你想要的功能的函數(shù)呢?
ID:384109 發(fā)表于 2022-11-29 16:39
應(yīng)該是改變fraction的寫法
ID:401564 發(fā)表于 2022-11-29 15:35
取一個(gè)小數(shù)的分子?這個(gè)時(shí)候分母在干嘛?
這是什么意思?
是我文化太低還是問(wèn)題太深?yuàn)W?
ID:161164 發(fā)表于 2022-11-29 13:25
這不單是c語(yǔ)言和宏的問(wèn)題
更是數(shù)學(xué)的分?jǐn)?shù)約簡(jiǎn)問(wèn)題(即最大公因數(shù))

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

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

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