我正在制作一个简单的计算器(我是初学者),我想知道为什么当我将1除以4时,我得到0.我知道它与数字类型有关。这是我的代码:
private static void calc(int a, int b,String op){
if (op.equals("add")){
double ans = a+b;
System.out.println(ans);
}
if(op.equals("subtract")){
double ans=a-b;
System.out.println(ans);
}
if(op.equals("multiply")){
double ans=a*b;
System.out.println(ans);
}
if(op.equals("divide")){
double ans=a/b;
System.out.println(ans);
}
}
我无法让我的变量(ans)拥有多个小数点。当答案需要一个(如1/4)时,它只返回0.
请帮助。
答案 0 :(得分:0)
你需要加倍,因为你的所有结果值都是双倍的。
private static void calc(int a, double b,String op){
}
或者简单地说:
if(op.equals("divide")){
double ans=(double)a/b;
System.out.println(ans);
}
答案 1 :(得分:0)
虽然其他评论和答案都是正确的,但它们没有提供足够的细节(IMO)。
虽然ans
是double
,但等式右边的值仍为int
。
double ans = a / b;
// equiv to:
// double ans = (double)(a / b);
所以,当你评估这个时,你会得到:
double ans = (double)(1/4);
= (double)(0);
= 0.0d;
要解决此问题,您需要将一个或两个操作数强制转换为double
。
double ans = ( (double) a ) / ( (double) b );
= ( (double) 1 ) / ( (double) 4 );
= 1.0d / 4.0d;
~= 0.25d;
还要注意关于@ Salah的回答,从整数到双重的转换刚刚被移动。由于您可以隐式地将int
转换为double
,因此使用整数(例如文字1
)调用该函数会自动将整数转换为double。但是,您可能不希望允许将非整数传递给您的函数,如果是这样,那么此解决方案将不正确。