以下のサンプルプログラムをScalaで異なるパラメータで実行しました。 ScalaのIDEででも、私はダブルとしてのX宣言した「大きすぎる整数」などのエラーを与える1E10と同じですDouble in Scalaの指数形式で数値を渡す必要があるのはなぜですか?
object TestScalaWS {
println("Welcome to the Scala worksheet") //> Welcome to the Scala worksheet
3+5 //> res0: Int(8) = 8
1.0E5 //> res1: Double(100000.0) = 100000.0
def abs(x: Double) = if (x<0) - x else x //> abs: (x: Double)Double
def sqrtIter(guess: Double, x: Double):Double =
if (isGoodEnough(guess,x)) guess
else sqrtIter(improve(guess,x),x) //> sqrtIter: (guess: Double, x: Double)Double
def isGoodEnough(guess: Double, x: Double) =
abs(guess*guess-x) < 0.001 //> isGoodEnough: (guess: Double, x: Double)Boolean
def improve(guess: Double, x:Double) =
(guess + x/guess)/2 //> improve: (guess: Double, x: Double)Double
def sqrt(x:Double) = sqrtIter(1.0,x) //> sqrt: (x: Double)Double
sqrt(2) //> res2: Double = 1.4142156862745097
sqrt(4) //> res3: Double = 2.0000000929222947
sqrt(0.001) //> res4: Double = 0.04124542607499115
sqrt(0.1e-20) //> res5: Double = 0.03125
sqrt(0.1e20) //> res6: Double = 3.1622776601683793E9
sqrt(1.0e20) //> res7: Double = 1.0E10
sqrt(1E9) //> res8: Double = 31622.776601684047
sqrt(1000000000) //> res9: Double = 31622.776601684047
sqrt(1E10) //> res10: Double = 100000.0
}
しかし、SQRT(10000000000)。
コンパイラの解釈の問題があるものの、正確に何を意味するのかわかりません。この問題はScalaでのみ発生しますか? Javaにも存在します。 ?またはScala IDEの問題?
ありがとう、 Gopal。