2016-11-05 12 views

答えて

0

あなたのダブルスを設定し、(100.00含め山車として、すべての値を設定し、他に何があります)あなたが3.0ではなく3を使用したことを確認してください割ます。

あなたの変数型がdoubleであっても、あなたの分割int型とそれによってエラーが発生します。

私は間違っている可能性があります。

+0

ありがとうございます! – user3855182

+0

嬉しいです。 – gencode

1

数値をゼロで割っているため、無限大になります。 1-(Math.pow(intrest/400 + 1,(-1/3)))の値は、ここで0

でデバッグコードです:ここでは

public class Round { 


    public static void main(String args[]){ 


     double intrest=8.5; 
     double quaters =21.0/3.0; 
     double first=intrest/400.0 + 1 ; 
     double secound=(-1.0/3.0); 
     double amount=100.0; 
     System.out.println("intrest"+intrest); 
     System.out.println(secound); 
     System.out.println(quaters); 
     System.out.println(first); 
     System.out.println(Math.pow(intrest/400 + 1, quaters) - 1); 
     System.out.println(1-(Math.pow(intrest/400 + 1,(-1/3)))); 



     double monthpayment = amount * ((Math.pow(intrest/400 + 1, quaters) - 1)/(1-(Math.pow(intrest/400 + 1,(-1/3))))); 

     System.out.println(monthpayment); 
    } 
} 

行ごとに出力されます。

intrest8.5 
-0.3333333333333333 
7.0 
1.02125 
0.15857589055432686 
**0.0** 
Infinity 

は、したがって、あなたが取得している、あなたはゼロで、それを分割している参照してください。無限

あなたが無限大にしたくない場合は、あなただけの変更を次の手順を実行することができます

double monthpayment = amount * ((Math.pow(intrest/400 + 1, quaters) - 1)/(1-(Math.pow(intrest/400 + 1,((double)-1/3))))); 

今値(1-(Math.pow(intrest/400 + 1,((double)-1/3))))0.006984615789001336代わりの0

+0

@ user3855182:回答があれば受け付けてください。 3.0が唯一の理由ではなく、ゼロとして1つの方程式を得ているため、ゼロで割っているので、無限大になります。 – Techiee

1

だろうあなたが直面している問題は、/ -1であります3を返しているとき0、

これは、特に指定しないと1と3が整数として扱われるため、-1/3は整数0に評価され、次に0にキャストされます。try( - 1.0/3)、または多分-1D/3

パワーゼロに発生したすべての値は、あなたが表現

Math.pow(intrest/400 + 1,(-1/3)) 

のための1として値を受信して​​いる理由は、単に

Math.pow(intrest/400 + 1,((double)-1/3)) 
でこれを置き換えている1 の数値を持っています

決勝表現

double monthpayment = amount * ((Math.pow(intrest/400 + 1, quaters) - 1)/(1-(Math.pow(intrest/400 + 1,((double)-1/3))))); 
System.out.println(monthpayment); 

よりDETのためにこれを見ますアイルズhttps://stackoverflow.com/a/366240/3933557

関連する問題