如何划分数字,但排除在PHP中的剩余部分?
当我用VC ++ 10编译这个代码时: DWORD ran = rand(); return ran / 4096; 我得到这个反汇编: 299: { 300: DWORD ran = rand(); 00403940 call dword ptr [__imp__rand (4050C0h)] 301: return ran / 4096; 00403946 shr eax,0Ch 302: } 00403949 ret 这是干净简洁的,用合理的右移代替了两位的权力。 然而,当我编译这个代码: int ran = rand(); return ran / 4096; 我得到这个反汇编: 299: { 300: int ran = rand(); […]
我只是想知道,如果我想分割一个B,并且对结果C和其余部分都感兴趣(比如说我有秒数,并且想把它们分成几分钟和几秒钟),那么最好的方法是什么去做吧? 可不可能是 int c = (int)a / b; int d = a % b; 要么 int c = (int)a / b; int d = a – b * c; 要么 double tmp = a / b; int c = (int)tmp; int d = (int)(0.5+(tmp-c)*b); 要么 也许有一个神奇的function,同时给予一个?
任何人都在意解释为什么这两个代码显示不同的结果? VB.NET v4.0 Dim p As Integer = 16 Dim i As Integer = 10 Dim y As Integer = p / i //Result: 2 C#v4.0 int p = 16; int i = 10; int y = p / i; //Result: 1
我想指定在两个整数之间进行除法的小数位数,例如: select 1/3 目前返回0 。 我希望它返回0,33 。 就像是: select round(1/3, -2) 但是这不起作用。 我怎样才能达到预期的效果?
这是一个例子: Double d = (1/3); System.out.println(d); 这将返回0,而不是0.33333 …因为它应该。 有人知道吗?
当我在C#中进行分割时,它会自动向下舍入。 看到这个例子: double i; i = 200 / 3; Messagebox.Show(i.ToString()); 这给我看一个包含“66”的消息框。 200/3实际上是66.66666〜然而。 有没有办法我可以避免这个四舍五入和保持一个像66.6666667?
有谁知道为什么在C#中的整数除法返回一个整数,但不是浮动? 背后有什么想法(它只是C / C ++的遗产)? 在C#中: float x = 13 / 4; //imagine I used have overridden == operator here to use epsilon compare if (x == 3.0) print 'Hello world'; 这个代码的结果是: 'Hello world' 严格地说,不存在整数除法(按定义划分是产生有理数的运算,整数是其中非常小的一个子集)。