2016-05-25 22 views
-2

213,3333333...である必要がありますが、320.0です。どうして?整数を2倍に分割する方法は?

int integ = 320; 
System.out.println((double) integ/(double) (3/2)); 

私はダブルを使用しています。なぜ整数を取得するのですか?

+2

あなたはに操作の結果をキャストするべきではありませんダブル。代わりに、すべてのオペランドを強制的に倍精度にします。 (3/2)は(3.0/2.0)でなければなりません – JohannisK

+5

11.7kの評判を持つ人がこの質問をしているのを奇妙に思っています。 –

+1

「3/2」は「1」である。 '(double)(3/2)'は '(double)1'であり、' 1.0'です。 '1.5'を使いたい場合、' 1.5'や '3.0/2'を使用する場合 – khelwood

答えて

10

3/2はint divisionであり、結果は1となります(キャストするとという結果になります)。したがって、あなたは1.0によって320を分割しています。

代わりに1.5を使用してください(必要な場合は3.0/2)。

+0

3f/2もダブルスを使用しているので、@Aimnoxではなく@Aimnoxよりもむしろ – Aimnox

+2

です。 :) – Ivar

2

整数演算で実行される除算の後にdoubleにキャストしています。浮動小数点演算を強制する最も簡単な方法は、オペランドの一つの二重を作ることである:

int integ = 320; 
System.out.println((double) integ /(3.0/2)); 

または入力値が変数であれば:

int x = 3; 
int y = 2; 
System.out.println((double) integ /(1.0*x)/y); 
関連する問題