2014-05-07 326 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)/吨第二和第三是有用的;