我正在制作一个简单的程序来计算我玩的游戏。我尝试了2次尝试但没有用。我把所有的变量都加倍了,但我仍然得到了这个奇怪的结果。 actionTicks的值为1-10,skillLevel为1-99。
我目前的输出是:
您收到宠物的机会是:1.6E-6
你的机会是0
有人可以解释为什么结果是错误的以及我如何解决它。
import scala.io.StdIn._
object PetRates {
def main(args: Array[String]): Unit = {
var baseDiv: Double = 50000000
println("Enter amount of ticks per action: ")
var actionTicks = readDouble()
println("Now enter your skill level: ")
var skillLvl = readDouble()
var result: Double = actionTicks*skillLvl
println("Your chance is: " + (result / baseDiv))
println("Your chance is " + ((8 * 10)/50000000) )
}
}
答案 0 :(得分:1)
您的应用似乎已完全按照您的要求提供。您可能会对scientific notation:
感到困惑scala> (8.0 * 10.0) / 50000000.0
// res1: Double = 1.6E-6
scala> 0.0000016
// res2: Double = 1.6E-6
对于(8 * 10) / 50000000
,它是一个整数除法,返回一个整数(向0舍入),因为操作数都是Int
类型:
scala> (8 * 10) / 50000000
// res3: Int = 0
scala> 40000000 / 50000000
// res4: Int = 0
scala> 80000000 / 50000000
// res5: Int = 1
scala> -40000000 / 50000000
// res5: Int = 0
答案 1 :(得分:0)
要添加到Leo的答案中,您可以将分数中的任一项写为double,以便结果也是双倍的,例如
(8.0 * 10)/50000000)