Scala除法结果0

问题描述 投票:0回答:1

我正在编译这段代码并在除法上得到 0

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

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

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

我不明白为什么我的结果是 0.0。

scala list division
1个回答
5
投票

为了避免猜测 failAmount 和 studentId 都是整数(int 或 long),因此结果是整数(即 int/int 是 int)。自 14<53 this would be 0 (14 doesn't fit even once in 53). Only after 0 is calculated it is converted to double.

您想要做的是双除法,因此需要在除法之前通过将

.toDouble
添加到至少一个变量(最好添加到表达式中的所有变量)来转换为双除法,例如:

MarkAnalysis.failAmount.toDouble/Student.studentsId.length.toDouble
© www.soinside.com 2019 - 2024. All rights reserved.