C中的十六进制值除法

时间:2018-09-05 12:44:22

标签: c

我有两个以十六进制格式表示的数字:

uint16_t NUM   = 0xEEEE;  // Numerator
uint16_t DENUM = 0XFFFF;  // Denominator

我想要除法的数值。让我们在这里声明double

double divisonResult = (double)(NUM / DENUM); // Shall be 0.9333333333333333

调试时,divisonResult的值始终为0。

就我而言,是否允许强制转换?

还有另一种方法来获得想要的结果吗?

1 个答案:

答案 0 :(得分:14)

符号是一个红色的鲱鱼:问题在于强制转换发生在整数除法之后 ,原因是您将该操作放在了括号中。

简单使用

(double)NUM / DENUM

尽管我更喜欢

1.0 * NUM / DENUM

不仅是为了清楚起见,而且如果将NUM更改为比double更大的类型,则强制转换可能会导致截断。