[英]How do I get more than one decimal spot?
我正在制作一個簡單的計算器(我是初學者),我想知道為什么當我將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。
請幫助。
您需要除以double,因為所有結果值都為double。
private static void calc(int a, double b,String op){
}
或者簡單地:
if(op.equals("divide")){
double ans=(double)a/b;
System.out.println(ans);
}
盡管其他評論和答案是正確的,但它們沒有提供足夠的詳細信息(IMO)。
盡管ans
是double
ans
,但等式右側的值仍然是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的答案,即從整數到double的轉換剛剛被移動。 由於您可以將int
隱式轉換為double
,因此,使用整數(例如文字1
)調用該函數將自動將整數轉換為double。 但是,您可能不希望允許將非整數傳遞給函數,如果這樣,則此解決方案將是不正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.