我有两个以十六进制格式表示的数字:
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被改变为比双重更宽的类型的情况下,因此施法可能导致截断.