2014-05-07 325 views
1

我已計算的平均計算平均值?

Note類的方法:

private Double moyenneFinale; 

@Column(name = "moyenne_finale") 
public Double getMoyenneFinale() { 
    return this.moyenneFinale; 
} 

public void setMoyenneFinale(Double moyenneFinale) { 
    this.moyenneFinale = moyenneFinale; 
} 

類calBean

private double result; 
public double moyenneFinale; 
public calNote { 
    result=0.0 
    result= ((100 * 20)/100)/45; 
    moyenneFinale=result; 
    note.setMoyenneFinale(moyenneFinale); 
} 
//getter and setter 

結果應該是0.44 但記錄在數據庫中給定值的0.0 如果我使+1會是1.0

+0

可能重複的[在Java中的整數除法](http://stackoverflow.com/questions/7220681/division-of-integers-in-java) – BackSlash

+0

@BackSlash這個問題可能是重複的,但不完全是因爲這個問題增加了作爲文字的操作數的細微差別,並且通過向它們添加'.0'來改變它們的類型。 –

回答

2

所有數字li ((100 * 20)/100)/45的整數是整數,因此每個操作都執行整數算術,而不是浮點指針算術,最後在賦值操作時將結果轉換爲double

你應該改變你的文字中的至少一個100.020.045.0,...

+0

_你應該改變你的常數爲100.0,20.0,45.0_不完全是:只改變其中的一個會做詭計 – BackSlash

+0

@BackSlash這是真的,我會編輯我的答案,使其更清晰。 –

+0

@BackSlash我認爲改變它們都更清晰和更安全。 – broncoAbierto

1

在行

result= ((100 * 20)/100)/45; 

您使用運營商/的整數。當用於整數時,運算符/表現爲「DIV」(所得整數)。例子:10/4 = 2,但10.0/4 = 2.5,10/4.0 = 2.5,10.0/4.0 = 2.5。

選項包括:

要設置的數字爲100.0,20.0,100.0和45.0。 (第一個設置爲100.0就足夠了)。

result= ((100.0 * 20)/100)/45; 

對數字使用轉換。 (雙)100。

result= (((double)100 * 20)/100)/45; 

或者在方程式前加1.0 *

result= 1.0*((100 * 20)/100)/45; 

壽,第一種方法是最好在你的情況下,如果給出整數x,Y,Z,t和你的結果是((X * Y)/ Z)/噸第二和第三是有用的;