当部分结果为次要1时,nesC错误划分两个整数

时间:2014-01-11 14:20:34

标签: c printf tinyos nesc

这是解释我问题的代码的一部分:

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的两倍进行强制转换。 但它不起作用。

1 个答案:

答案 0 :(得分:0)

除了强制转换为double之外,还需要在%lf中使用double printf()的格式说明符。

printf("Packet_loss: %lf", ((double)(packet_tx-packet_rx)/(double)packet_tx)*100.0);