解决算术运算

0 c# math

int a = 3, b = 9, c = 2;
double e = 11, f = 0.1;

e = (b + c) / a * a;
Run Code Online (Sandbox Code Playgroud)

现在,我想现在的结果e 是什么.当我在脑子里做数学时,我得到了结果11/9 = 1,22222222

当我在编译器中运行程序时,我只是得到9.想想的方法是对的吗?

Sam*_*ica 7

有两件事出了问题,

  • 你误解了你的操作顺序
  • 你的整数是截断的

所以,编译器正在做的是

  • 9 + 2 = 11
  • 11/3 = 3.666截断为3
  • 3*3 = 9

使用括号,不要使用整数,使用所有双精度数.

double a = 3, b = 9, c = 2, d;
double e = 11, f = 0.1;
string s = "AB", t = "BA", v;

            e = (b + c) / (a * a);
Run Code Online (Sandbox Code Playgroud)

如果a,b和c都必须是整数,那么你可以投出它们

int a = 3, b = 9, c = 2, d;
double e = 11, f = 0.1;
string s = "AB", t = "BA", v;

            e = ((double)b + (double)c) / ((double)a * (double)a);
Run Code Online (Sandbox Code Playgroud)

现在这可以轻松完成

e = (double)(b + c) / (double)(a * a);
Run Code Online (Sandbox Code Playgroud)

这是因为括号中的两个操作都没有留下余数,但依靠这种巧合是不好的做法.