标签: integer-division

数学运算未返回预期结果

我正在使用一个函数,但代码不起作用。我将函数分解为几个部分,并尝试自己了解发生了什么。我懂了:

int res;
res = (1 / 2) * 2 + 2;
printf("%d", res);
Run Code Online (Sandbox Code Playgroud)

自己算算:

(1 /2) = 0.5

0.5 * 2 = 1

1 + 2 = 3

(1 / 2) * 2 + 2 = 3,对吧?

但是,当我运行代码时,它给出的输出为“2”,而不是“3”。

当我尝试这个时:(将 '(1 / 2)' 变为 '0.5')

int res;
res = 0.5 * 2 + 2;
printf("%d", res);
Run Code Online (Sandbox Code Playgroud)

我得到的预期输出为“3”,这很奇怪,因为上面的示例理论上与下面的示例相同。这是否与我的编译器不知道简单的数学优先规则有关?

c math integer-division

1
推荐指数
1
解决办法
67
查看次数

从程序集中捕获/禁用 SIGFPE 异常

在使用 .x86 程序集除以 0 时,出现 SIGFPE 异常idiv。我如何从汇编中禁用它?我需要系统调用还是可以直接在 x86 中完成?

再生产:

测试.asm

default rel
global WinMain

section .data 

section .text
WinMain:
    mov rcx, 0
    mov rdx, 0
    idiv rcx
Run Code Online (Sandbox Code Playgroud)

命令:

nasm -f win64 test.asm
gcc test.obj
gdb a
运行

x86 assembly x86-64 integer-division

1
推荐指数
1
解决办法
92
查看次数

划分错误的结果

我试图划分整数但结果得到0.我只是不明白我做错了什么.我在这个例子中只使用了int,但是用float或double得到了相同的结果测试.

我使用的代码是:

int wrongAnswers = askedQuestions - playerResult;
int percentCorrect = (playerResult / askedQuestions) * 100;
int percentWrong = (wrongAnswers / askedQuestions) * 100;


NSLog(@"askedQuestions: %i", askedQuestions);
NSLog(@"playerResult: %i", playerResult);
NSLog(@"wrongAnswers: %i", wrongAnswers);
NSLog(@"percentCorrect: %i", percentCorrect);
NSLog(@"percentWrong: %i", percentWrong);
NSLog(@"calc: %i", (wrongAnswers + playerResult));
NSLog(@"wrong answers %: %i %%", ((wrongAnswers / askedQuestions) * 100));
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

2011-01-09 16:45:53.411 XX [8296:207] askQuestions:5
2011-01-09 16:45:53.412 XX [8296:207] playerResult:2
2011-01-09 16:45:53.412 XX [ 8296:207] wrongAnswers:3
2011-01-09 16:45:53.413 XX [8296:207] percentCorrect:0%
2011-01-09 16:45:53.414 XX [8296:207] …

iphone objective-c integer-division

0
推荐指数
1
解决办法
281
查看次数

C#double,十进制问题

为什么这个计算:双数=(13 /(13 + 12 + 13))

等于0?

我认为它应该在0.34左右!

谢谢!

c# integer-division

0
推荐指数
1
解决办法
1995
查看次数

int除以int以生成BigDecimal

是否有可能将两个整数分成两个整数并从中生成一个BigDecimal?我正在尝试优化我的代码.如果我可以减少我声明新BigDecimal的次数,它应该会显着加快我的过程.截至目前,我知道如何减少我的计算最多的是:

BigDecimal tester = new BigDecimal("103993")
       .divide(new BigDecimal("33102"), 2000, BigDecimal.ROUND_DOWN);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能做这样的事情:

int example1 = 103993;
int example2 = 33102;

BigDecimal example3 = example1/example2;
Run Code Online (Sandbox Code Playgroud)

或类似的规定.我唯一的目标是加快执行时间.

java bigdecimal integer-division

0
推荐指数
1
解决办法
1878
查看次数

C:将Farenheit转换为Celsius

int main (void)
{
    int fahrenheit; // fahrenheit stands for fahrenheit
    double c; // c stands for celsius

    printf("Enter your fahrenheit, we'll covnvert it into celsius! ");
    scanf("%f", &fahrenheit);

    c = 5/9 * (fahrenheit - 32);
    printf("Here is your %f in celsius!.\n");

    return (0);
}
Run Code Online (Sandbox Code Playgroud)

我通过断点跟踪代码,当它输入我的输入时,计算结束,但公式是正确的.某种逻辑错误,我无法指责.请帮忙!

c integer-division

0
推荐指数
1
解决办法
2260
查看次数

在java中除以while循环

我正在尝试做的是使用while循环来检查userNum%2> 1一旦它击中一个我希望它停止并打印出除法的所有值,例如

如果20是用户num,它将生成.20/2和10/2和5/2然后2/2导致1然后停止(整数除法)

import java.util.Scanner;

public class DivideByTwoLoop {
   public static void main (String [] args) {
      int userNum = 0;

      userNum = 20;

      while ( (userNum % 2) > 1){
         userNum = userNum / 2;
         System.out.println(userNum );
      }

      System.out.println("");

      return;
   }
}
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所拥有的.任何帮助是极大的赞赏.

java while-loop integer-division

0
推荐指数
1
解决办法
3013
查看次数

在使用DIV指令之前,为什么EDX应为0?

我注意到EDX包含一些随机默认值,如00401000,然后我使用这样的DIV指令:

mov eax,10
mov ebx,5
div ebx
Run Code Online (Sandbox Code Playgroud)

它会导致INTEGER OVERFLOW ERROR.但是,如果我设置edx为0并执行相同的操作.我相信使用div会导致商重写eax和其余覆盖edx.

获得此INTEGER OVERFLOW ERROR确实让我感到困惑.

x86 assembly integer-division

0
推荐指数
1
解决办法
5017
查看次数

Common Lisp中的整数除法

我试着在Lisp中做分工.当我这样做时(/ 5 2),结果是5/2,但我需要的是2.

我怎样才能做到这一点?

common-lisp integer-division

0
推荐指数
1
解决办法
681
查看次数

ZeroDivisionError:即使我有一个零捕手,浮点除零

我对Python有点新鲜.我在下面附上了一段代码.constant_a&b是整数.运行此代码时,我收到以下错误:

回溯(最近一次调用最后一次):文件"U:\ V10_run2\process.py",第209行,delta_mcs_2_gfx_percentage =(delta_mcs_2_gfx*100)/ float(mcs)ZeroDivisionError:浮点除零

mcs=hash["MCF"]*constant_a/constant_b  

if mcs is 0:
      delta__percentage=-100
else:
      delta__percentage=(delta*100)/mcs
Run Code Online (Sandbox Code Playgroud)

正如错误所说,我认为这是因为python试图进行整数除法float(delta*100)/float(mcs)并将mcs舍入为0但我也尝试过这也没有帮助.有什么建议 ??

python integer-division divide-by-zero floating

0
推荐指数
1
解决办法
949
查看次数