c - 当部分结果小于 1 时,nesC 错误地除以两个整数

标签 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 进行转换。 但它不起作用。

最佳答案

除了转换为 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/

相关文章:

c - 我如何在另一个函数中调用显示回调函数,以便我的定时器函数也可以执行?

c - Printf 的参数

c - printf 不打印最后一个字符

c - C 中 printf 字符串格式的奇怪行为

创建数据包时编译错误

c - Rand() 在 C 中不是唯一的

你能解释一下 *ptr++ 和 *(++ptr) 之间的区别吗?

uzzfizz 程序中的代码重复(包括负数)

sprintf 中日期的 Perl 字符串 %s 说明符无效上下文