Mike
Mike

Reputation: 137

Scala Has Infinity but no Infinitesimal. Why?

Open a Scala interpreter.

scala> 1E-200 * 1E-200    
res1: Double = 0.0

scala> 1E200 * 1E200    
res2: Double = Infinity

A very large product value evaluates to Infinity. A very small value evaluates to zero.

Why not be symmetrical and create something called Infinitesimal?

Upvotes: 3

Views: 746

Answers (2)

Ulysse Mizrahi
Ulysse Mizrahi

Reputation: 681

Scala, just like Java, follows the IEEE specification for floating point numbers, which does not have "infinitesimals". I'm not quite sure infinitesimals would make much sense either way, as they have no mathematical interpretation as numbers.

Upvotes: 0

robot1208
robot1208

Reputation: 311

Basically this has to do with the way floating point numbers work, which has more to do with your processor than scala. The small number is going to be so small that the closest representation corresponds to +0 (positive zero), and so it underflows to 0.0. The large number is going to overflow past any valid representation and be replaced with +inf (positive infinity). Remember that floating point numbers are a fixed precision estimation. If you want a system that is more exact, you can use http://www.scala-lang.org/api/2.11.8/#scala.math.BigDecimal

Upvotes: 2

Related Questions