Satoshi MailBeta Open in Satoshi Mail

BUG Report: Rounding glitch

BitcoinTalk forum · 2 messages · from 17 July 2010 · with Satoshi Nakamoto, The Madhatter

Read in Satoshi Mail Archive source

The Madhatter · · original
Check this out... I just installed 0.3.1 on two different machines and moved one bitpenny (0.01): -= Before the transfer =- [bitcoind@box1 ~]$ ~/bin/bitcoind getinfo {     "balance" : 1.150000000000,     "blocks" : 68717,     "connections" : 6,     "proxy" : "",     "generate" : false,     "genproclimit" : -1,     "difficulty" : 181.5432893640505 } [bitcoind@box2 ~]$ ~/bin/bitcoind getinfo {     "balance" : 0.000000000000,     "blocks" : 68717,     "connections" : 22,     "proxy" : "",     "generate" : false,     "genproclimit" : -1,     "difficulty" : 181.5432893640505 } -= AFTER the transfer =- [bitcoind@box1 ~]$ ~/bin/bitcoind getinfo {     "balance" : 1.139999999999,     "blocks" : 68717,     "connections" : 10,     "proxy" : "",     "generate" : false,     "genproclimit" : -1,     "difficulty" : 181.5432893640505 } [bitcoind@box2 ~]$ ~/bin/bitcoind getinfo {     "balance" : 0.010000000000,     "blocks" : 68717,     "connections" : 20,     "proxy" : "",     "generate" : false,     "genproclimit" : -1,     "difficulty" : 181.5432893640505 } I personally think it is a display problem, but I can't be sure.. strange, no? Both machines are running FreeBSD 7.2/amd64.
Satoshi Nakamoto · · original
It must be a rounding error when getinfo converts to floating point to return the JSON-RPC result.  The only place where it uses floating point to represent money is returning a value in JSON-RPC. 1.139999999999 is longer than bitcoin can internally represent. internally, it could only be: 1.13999999 or 1.14000000 1.139999999999 is much much closer to 1.14000000 than 1.13999999, so it must be 1.14000000. The code is this: (double)GetBalance() / (double)COIN. (I can't think of an easy way to fix it at the moment)