【发布时间】:2010-02-28 22:31:12
【问题描述】:
当我将浮点数 * 12 相乘时,以下代码不会产生我期望的答案。
void setup_timer_parameters(float micro_seconds)
{
//constants
calibration = 0;
//calculables
periods_needed = micro_seconds * 12 + calibration;
target_overflows = periods_needed / 65536;
overflows_counter = target_overflows;
temp = periods_needed - (target_overflows * 65536);
leftover = (long)temp;
//int overflows_needed = micro_seconds % timer_period;
printf(lcd_putc, "\fPN%05f TMP%05f\nTO%05f LO%05f", periods_needed, temp, target_overflows, leftover);
}
void main(){
setup_timer_parameters(20000F);
}
由于某种原因,我的显示器显示 period_needed 是 -518!为什么不是 20000*12 = 240000?
【问题讨论】:
-
没有
periods_needed或calibration类型的定义,我们无从得知。我敢打赌,periods_needed有点短,但你没有提供所有代码。 -
period_needed、temp、target_overflows、leftover的类型有哪些?请给代码。
-
什么是 period_needed 声明?是整数吗?是浮子吗?
-
您可能需要编写 12.0,但是您遗漏的所有内容谁能说得清?
-
period_needed 和 target_overflows 是什么类型?
标签: c types primitive-types