我有两个以十六进制格式表示的数字:
uint16_t NUM = 0xEEEE; // Numerator
uint16_t DENUM = 0XFFFF; // Denominator
我想要除法的数值。让我们在这里声明double
:
double divisonResult = (double)(NUM / DENUM); // Shall be 0.9333333333333333
调试时,divisonResult
的值始终为0。
就我而言,是否允许强制转换?
还有另一种方法来获得想要的结果吗?
答案 0 :(得分:14)
符号是一个红色的鲱鱼:问题在于强制转换发生在整数除法之后 ,原因是您将该操作放在了括号中。
简单使用
(double)NUM / DENUM
尽管我更喜欢
1.0 * NUM / DENUM
不仅是为了清楚起见,而且如果将NUM更改为比double更大的类型,则强制转换可能会导致截断。