簡體   English   中英

我如何獲得一個以上的小數點?

[英]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)。

盡管ansdouble 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM