在Ubuntu Linux 10.04上使用GCC,我在分割后进行了不必要的舍入。
我试过了:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void FormatReading(int temp)
{
double reading = temp / 100;
printf("%f\n",reading); /* displays 226.000000, was expecting 226.60 */
}
int main(void)
{
FormatReading(22660);
return 0;
}
有人建议我试试:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void FormatReading(int temp)
{
long reading = temp ;
reading = reading / 100;
printf("%3.2ld\n",reading); /* displays 226 */
}
int main(void)
{
FormatReading(22660);
return 0;
}
我也尝试过:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void FormatReading(int temp)
{
long reading = temp ;
double reading2 = reading / 100;
printf("%3.2f\n",reading2); /* displays 226.00 */
}
int main(void)
{
FormatReading(22660);
return 0;
}
我也尝试使用include math.h和编译器标签-lm以各种方式使用round函数,但是找不到我想要的东西。
非常感谢任何帮助。
祝你好运, 伯特
答案 0 :(得分:9)
double reading = temp / 100.0;
^^
temp / 100
是整数除法 - 将结果赋值给double不会改变它。
答案 1 :(得分:3)
您正在使用整数除法,它总是给出积分结果而不是分数,然后将结果分配给double。除以100而不是100来获得您想要的行为。