2012-04-07 4 views
3

Quand je vérifie les valeurs à l'intérieur interprète scala comme:comment comparer deux types d'objets différents dans scala?

scala> 1==1.0000000000000001 

res1: Boolean = true 

scala> 1==1.000000000000001 

res2: Boolean = false 

Ici, je ne reçois pas vue claire lié avec « COMMEnT compilateur scala interpréter comme des entiers ou des flottants ou doubles (et comparer) ».

Répondre

9

Ce n'est pas vraiment lié à Scala, c'est plutôt un problème arithmétique en virgule flottante . Tout d'abord en comparant Int avec Double il va lancer Int à Double (toujours sûr). Le deuxième cas est évident - les valeurs sont différentes. Dans le premier cas, le type Double ne peut pas stocker autant de chiffres significatifs (17 dans votre cas, le nombre à virgule flottante 64 bits peut stocker jusqu'à 16 chiffres décimaux). . Et 1 == 1.

Questions connexes