0

关于这些操作的结果是什么,我有几个问题。

首先,如果我有两个整数并将它们相除并将结果保存为双精度数。是否存在任何舍入问题,例如 1/2 等于 0.5 而不是 1。

double ratio = int1/int2;

其次,如果我现在有这个比率并将它乘以一个 UWORD 会有什么问题吗?

UWORD word1 = 4098;
UWORD word2 = ratio * word1; 

顺便说一句,当我执行这些操作时确实会收到编译器警告

 narrowing or signed-to-unsigned type conversion found: double to unsigned short
4

1 回答 1

1

您需要转换int1为 adouble以便编译器知道使用浮点计算(而不是整数计算):

double ratio = ((double) int1) / int2;

要将浮点计算存储ration * word1UWORD您需要再次转换它(以防止警告):

UWORD word2 = (UWORD) (ratio * word1);

注意:这将去掉小数,如果您需要适当的舍入,请尝试round()使用math.h. (再次,适当的铸造!)

于 2013-01-21T14:22:11.650 回答