Li Xinyang - 6 months ago 714

Swift Question

Current learning Swift, there are ways to find *max* and *min* value for different kind of **Integer** like

`Int.max`

`Int.min`

Is there a way to find max value for Double and Float? Moreover, which document should I refer for this kind of question? I am currently reading Apple's

Answer

While there’s no `Double.max`

, it is defined in the C `float.h`

header, which you can access in Swift via `import Darwin`

.

```
import Darwin
let fmax = FLT_MAX
let dmax = DBL_MAX
```

These are roughly `3.4 * 10^38`

and `1.79 * 10^308`

respectively.

But bear in mind it’s not so simple with floating point numbers (it’s never simple with floating point numbers). When holding numbers this large, you lose precision in a similar way to losing precision with very small numbers, so:

```
let d = DBL_MAX
let e = d - 1.0
let diff = d - e
diff == 0.0 // true
let maxPlusOne = DBL_MAX + 1
maxPlusOne == d // true
let inf = DBL_MAX * 2
// perhaps infinity is the “maximum”
inf == Double.infinity // true
```

So before you get into some calculations that might possibly brush up against these limits, you should probably read up on floating point. Here and here are probably a good start.