我有一个表software和列,作为dev_cost,sell_cost.如果dev_cost是16000并且sell_cost是7500.
如何找到要销售的软件数量以便恢复dev_cost?
我查询如下:
select dev_cost / sell_cost from software ;
Run Code Online (Sandbox Code Playgroud)
它回答2作为答案.但我们需要得到3,对吧?
对此有什么疑问?提前致谢.
任何人都可以告诉我一种有效的方法来执行除法操作而不使用'/'.我可以log(n)使用类似于二进制搜索的方法逐步计算整数值.
115/3
57 * 3 > 115
28 * 3 < 115
47 * 3 > 115
.
.
.
38 * 3 is quotient value .....
Run Code Online (Sandbox Code Playgroud)
但还有其他更有效的方法吗?
我想在JavaScript中划分一个数字,它会返回一个十进制值.
例如:737/1070- 我希望JavaScript返回0.68; 但它会将其四舍五入并将其返回0.
如何将其设置为返回两位小数或完整结果?
最近的一个问题是,编译器是否允许用浮点乘法替换浮点除法,这激发了我提出这个问题.
在严格的要求下,代码转换后的结果应与实际的除法运算在位上相同,可以看出,对于二进制IEEE-754算术,这对于2的幂的除数是可能的.只要除数的倒数可以表示,乘以除数的倒数就可以得到与除数相同的结果.例如,乘法0.5可以代替除法2.0.
然后人们想知道其他除数这样的替换是什么工作,假设我们允许任何短指令序列取代除法但运行速度明显更快,同时提供相同的结果.特别是除了普通乘法之外,还允许融合乘法 - 加法运算.在评论中,我指出了以下相关文件:
Nicolas Brisebarre,Jean-Michel Muller和Saurabh Kumar Raina.当事先知道除数时,加速正确舍入的浮点除法.IEEE Transactions on Computers,Vol.53,第8期,2004年8月,第1069-1072页.
本文作者提出的技术预先计算了除数y的倒数作为归一化的头尾对z h:z l如下:z h = 1/y,z l = fma(-y,z h,1 )/ y.之后,将除数q = x/y计算为q = fma(z h,x,z l*x).本文推导出除数y必须满足的各种条件才能使该算法起作用.正如人们容易观察到的那样,当头尾迹象不同时,该算法存在无穷大和零的问题.更重要的是,它将无法为数量非常小的股息x提供正确的结果,因为商尾的计算z l*x受到下溢的影响.
本文还提到了另一种基于FMA的划分算法,该算法由Peter Markstein在IBM工作时开创.相关参考是:
PW Markstein.在IBM RISC System/6000处理器上计算基本功能.IBM Journal of Research&Development,Vol.1990年1月34日第1号,第111-119页
在Markstein算法中,首先计算倒数rc,从中形成初始商q = x*rc.然后,用FMA精确地计算除法的余数r = fma(-y,q,x),并且最终计算出改进的,更准确的商,其为q …
当我用VC++ 10编译这段代码时:
DWORD ran = rand();
return ran / 4096;
Run Code Online (Sandbox Code Playgroud)
我得到这个反汇编:
299: {
300: DWORD ran = rand();
00403940 call dword ptr [__imp__rand (4050C0h)]
301: return ran / 4096;
00403946 shr eax,0Ch
302: }
00403949 ret
Run Code Online (Sandbox Code Playgroud)
这是一个干净,简洁,用一个逻辑右移的2的幂代替一个除法.
然而,当我编译这段代码时:
int ran = rand();
return ran / 4096;
Run Code Online (Sandbox Code Playgroud)
我得到这个反汇编:
299: {
300: int ran = rand();
00403940 call dword ptr [__imp__rand (4050C0h)]
301: return ran / 4096;
00403946 cdq
00403947 and edx,0FFFh
0040394D add eax,edx
0040394F sar eax,0Ch
302: }
00403952 ret …Run Code Online (Sandbox Code Playgroud) 来自haskell报告:
如果y不为零,则quot,rem,div和mod类方法满足这些定律:
Run Code Online (Sandbox Code Playgroud)(x `quot` y)*y + (x `rem` y) == x (x `div` y)*y + (x `mod` y) == x
quot是整数除法被截断为零,而结果div被截断为负无穷大.
例如:
Prelude> (-12) `quot` 5
-2
Prelude> (-12) `div` 5
-3
Run Code Online (Sandbox Code Playgroud)
结果如何截断的区别在哪里?
在我的应用程序中,我遇到了以下结果,并对结果感到惊讶:
8/-7=-2 (两个整数).
这意味着什么?
因此,如果我有一个数字范围'0 - 1024'并且我想将它们带入'0 - 255',则数学将要求将输入除以输入的最大值(在这种情况下为1024),这将给出我是一个介于0.0 - 1.0之间的数字.然后乘以目标范围,(255).
这就是我想要做的!
但由于某种原因,在Java中(使用Processing)它总是返回值0.
代码就像这样简单
float scale;
scale = (n/1024) * 255;
Run Code Online (Sandbox Code Playgroud)
但我得到0.0.我试过double和int.一切都无济于事.为什么!?
我需要找出一个数字是否可以被3整除而不使用%,/或者*.给出的提示是使用atoi()函数.知道怎么做吗?