Scala除法结果% 0

qgelzfjb  于 2023-04-30  发布在  Scala
关注(0)|答案(1)|浏览(139)

我正在编译这段代码,除法运算得到0

println((MarkAnalysis.failAmount/Student.studentsId.length).toDouble + " " + MarkAnalysis.failAmount + " " + Student.studentsId.length)

我把它打印出来,以确保除法不会返回零,并且

MarkAnalysis.failAmount = 14
MarkAnalysis.studentsId.length = 53

我不明白为什么我得到0。0的结果。

yc0p9oo0

yc0p9oo01#

为了让猜测更麻烦,failAmount和studentId都是整数(int或long),因此结果是一个整数(i.即int/int是int)。因为14〈53,所以这将是0(14甚至不适合53中的一次)。只有在计算0后,它才转换为double。

你想要做的是一个双精度除法,因此需要在做除法之前转换为双精度,方法是将.toDouble添加到至少一个变量(最好在表达式中添加到所有变量),e。例如:

MarkAnalysis.failAmount.toDouble/Student.studentsId.length.toDouble

相关问题