编号622.08E6替换为622080000

liv*_*hak 0 c floating-point precision integer

我最近遇到了一个C代码(顺便说一句)

freq_xtal = ((622.08E6 * vcxo_reg_val->hiv * vcxo_reg_val->n1)/(temp_rfreq));
Run Code Online (Sandbox Code Playgroud)

从我的直觉来看,似乎622.08E6应该意味着622.08 x 10 ^ 6.

从这个问题来看,这个假设是正确的

与此相关的问题

所以我尝试用622.08e6替换

uint32_t default_freq = 622080000;
Run Code Online (Sandbox Code Playgroud)

出于某种原因,这似乎并没有消失

任何想法或建议表示赞赏

It'*_*ete 6

您遇到的问题(我在这里推测是因为我没有剩下的代码)似乎是用整数替换浮点导致乘法和除法是基于整数的,而不是基于小数的.因此,您现在计算错误的值.

尝试将uint32_t类型转换为double,然后查看是否将其清除.