![]() |
lkc8210 發表于 2022-11-30 11:08 多謝你的幫助,開心每一天 |
censv 發表于 2022-11-29 18:41 你還不如說你要干嘛好點 不要想當然的認為一個問題可以“這樣”解決,然后就問要怎么樣都能達到“這樣”的效果 0.1 0.2 0.3 0.4 0.5 哪個分子不是1,你不管分母,只管分子,這有什么意義呀? |
censv 發表于 2022-11-30 09:55 那么numerator只能用函數來算
|
Hephaestus 發表于 2022-11-29 22:41 625是在11.0592MHz下精確的最小整數時間(單位us) |
樓主沒明白自己想要得到什么,也沒明白#define是什么用法 |
在C語言中,無論是整形數還是浮點數,都不可以能以分號的形式保存,即使你寫成a/b的形式,編譯器都會給你計算出具體的結果的。所以你的想法,應該是不能實現的。只能通過其他方法來實現。 |
censv 發表于 2022-11-29 21:42 你的這個數本身就沒有意義,12000000/11059200去掉公約數,化簡成兩個互質數比值625/576,那么625的物理意義是什么?如果這個問題說不清,那么625這個數據就是毫無意義的。 |
Hephaestus 發表于 2022-11-29 21:14 多謝幫助,給我了個確定的答案 |
人中狼 發表于 2022-11-29 20:22 因為numerator的值取決于fraction |
樓主的意思是12/11.0592化簡為625/576這兩個沒有公倍數的數值的比值。但是公約數公倍數本身就是純粹的整數的概念,如果輸入是浮點數,那么就是無解的。樓主可以手擼出答案,但是在計算機上面不可能復現,因為11.0592在計算機內部浮點格式中,總是有誤差的,不可能準確,自然無論如何也不可能算出結果。 題目本身就是大錯特錯,大家散了吧。 |
censv 發表于 2022-11-29 18:41 那么numerator 永遠是1, 無論你 fraction 是多少。 即便,fraction = 2, numerator 也可以 =1, (1/0.5 的分子) |
censv 發表于 2022-11-29 18:38 既然該值編譯時可確定,為什么不直接定義?還要想著如何計算、如何列個公式不麻煩? 如: //#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 需要哪個frq,把其它的注釋掉就OK了。 |
為什么不能numerator = 1,然后fraction = numerator / 2呢![]() |
Y_G_G 發表于 2022-11-29 15:35 比如fraction定義為0.5,那么numerator則為1(1/2的分子) |
名字不是重點 發表于 2022-11-29 16:57 因為,該值編譯時可確定,我不想有運行開銷 |
宏并不能節省空間,而一些復雜的功能可以用函數來做,所以你為什么不做一個你想要的功能的函數呢? |
應該是改變fraction的寫法 |
取一個小數的分子?這個時候分母在干嘛? 這是什么意思? 是我文化太低還是問題太深奧? |
這不單是c語言和宏的問題 更是數學的分數約簡問題(即最大公因數) |