【发布时间】:2015-10-07 11:12:25
【问题描述】:
我有一个结构变量health,可以作为disk->health访问,它是double类型。我正在尝试将其打印为双精度,然后将其转换为 int 并再次打印。
printf("The disk health in loop is: %lf\n", disk_ptr->health);
//result is: 13230000014.560297
printf("The disk health in loop is: %i\n", (int) floor(disk_ptr->health));
//result is: -2147483648
printf("The disk health in loop is: %d\n", (int) floor(disk_ptr->health));
//result is: -2147483648
上面的代码是我正在使用的。我希望输出第二个结果:13230000014,但它给了我一个奇怪的负数。
【问题讨论】:
-
你
#include <math.h>了吗? -
是的,我确实包含了它
-
我怀疑你的
ints只有32位,最多只能表示2147483648。 -
这个数字似乎太大,
int无法处理。 -
截断值,
(int)disk_ptr->health就够了。
标签: c int type-conversion double