# Why isn't Float32 == Float64 (Converting from Float32 to Float64)

**URL:** <https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423>\
**Category:** General Usage\
**Tags:** question\
**Created:** [July 2, 2020, 10:17am UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423 "2020-07-02T10:17:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [July 2, 2020, 10:17am UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423/1 "2020-07-02T10:17:50Z")

</div>

```julia
julia> 312.09
312.09

julia> 312.09 |> Float64
312.09

julia> 312.09 |> Float64 |> Float32
312.09f0

julia> 312.09 |> Float64 |> Float32 |> Float64
312.0899963378906

julia> 312.09f0 == 312.09
false

```

Clearly this number exists as an `Float32`. But why doesn’t it convert back properly?

---

<div class="post-metadata">

**Author:** ![GunnarFarneback](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gunnarfarneback/32/1827_2.png) [@GunnarFarneback](https://discourse.julialang.org/u/GunnarFarneback)\
**Post date:** [July 2, 2020, 10:24am UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423/2 "2020-07-02T10:24:52Z")

</div>

It doesn’t have an exact representation in either `Float32` or `Float64`.

```julia
julia> BigFloat(312.09)
312.08999999999997498889570124447345733642578125

julia> BigFloat(312.09f0)
312.089996337890625

```

---

<div class="post-metadata">

**Author:** ![Iulian.Cioarca](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/iulian.cioarca/32/30166_2.png) [@Iulian.Cioarca](https://discourse.julialang.org/u/Iulian.Cioarca)\
**Post date:** [July 2, 2020, 10:26am UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423/3 "2020-07-02T10:26:04Z")

</div>

```julia
julia> bitstring(Float32(312.09))
"01000011100111000000101110000101"

julia> bitstring(Float64(312.09))
"0100000001110011100000010111000010100011110101110000101000111101"

julia> bitstring(Float64(Float32(312.09)))
"0100000001110011100000010111000010100000000000000000000000000000"

```

Float32 truncates an already inexact representation.

---

<div class="post-metadata">

**Author:** ![Impressium](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/impressium/32/19575_2.png) [@Impressium](https://discourse.julialang.org/u/Impressium)\
**Post date:** [July 2, 2020, 10:32am UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423/4 "2020-07-02T10:32:13Z")

</div>

Thanks! Both answers are very helpful!

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [July 2, 2020, 12:39pm UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423/5 "2020-07-02T12:39:58Z")

</div>

Note for numbers that are exactly representable in Base 2 (e.g. `1/4` or `312+3/4`) your expectations are met:

```julia
julia> 312.75 |> Float32 |> Float64
312.75

```

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [July 2, 2020, 4:01pm UTC](https://discourse.julialang.org/t/why-isnt-float32-float64-converting-from-float32-to-float64/42423/6 "2020-07-02T16:01:44Z")

</div>

> [@Impressium](#):
>
> `julia> 312.09 |> Float64 |> Float32`

BTW, there is no point in ‘converting’ `312.09` to `Float64`, since literal floats are already `Float64` in the first place.
