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语言和宏的问题 更是数学的分数约简问题(即最大公因数) |