C中的十六进制值除法

ahm*_*dkh 3 c

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

uint16_t NUM   = 0xEEEE;  // Numerator
uint16_t DENUM = 0XFFFF;  // Denominator
Run Code Online (Sandbox Code Playgroud)

我希望得到除法的数值.我们在double这里声明:

double divisonResult = (double)(NUM / DENUM); // Shall be 0.9333333333333333
Run Code Online (Sandbox Code Playgroud)

当我调试时,值divisonResult始终为0.

在我的情况下,允许或不允许铸造?

有没有其他方法来获得想要的结果?

Bat*_*eba 14

符号是一个红色的鲱鱼:问题是由于你在括号中包含了这个操作,所以在整数除法之后发生了转换.

使用简单

(double)NUM / DENUM
Run Code Online (Sandbox Code Playgroud)

虽然我更喜欢

1.0 * NUM / DENUM
Run Code Online (Sandbox Code Playgroud)

不仅为了清楚起见,而且在NUM被改变为比双重更宽的类型的情况下,因此施法可能导致截断.

  • @ user694733:我个人总是使用`1.0*NUM/DENUM`,但那是另一次.值得一提的是"NUM/DENUM*1.0"不起作用. (2认同)