As FoxPup mentioned, int64 is best choice since it's enough even to specify total Bitcoin supply (in Satoshi).
Additionally, it's easier to use/implement since not all software uses same double/float64 standard and AFAIK int64 is faster.
That's the issue, what if a conversion goes bad and a user gets in his balance 1000's of bitcoin?
is that what you mean?
https://play.golang.org/p/rJncvBvqyEP