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.想想的方法是对的吗?
有两件事出了问题,
所以,编译器正在做的是
使用括号,不要使用整数,使用所有双精度数.
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)
这是因为括号中的两个操作都没有留下余数,但依靠这种巧合是不好的做法.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |