这是我的代码的一部分,用于解释我的问题:
int64_t packet_tx=3;
int64_t packet_rx=5;
int64_t packet_loss;
printf("Packet_loss: %d",((packet_tx-packet_rx)/packet_tx)*100);
在此代码中,packet_tx>=packet_rx;
结果是整数,但中间结果不是整数。 我该如何解决我的问题?我尝试在分割之前使用双倍的 var packet_tx 和 packet_rx 进行转换。 但它不起作用。
最佳答案
除了转换为 double 之外,您还需要在 printf()
中使用 double 的格式说明符 %lf
。
printf("Packet_loss: %lf", ((double)(packet_tx-packet_rx)/(double)packet_tx)*100.0);
关于c - 当部分结果小于 1 时,nesC 错误地除以两个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063361/