Ли это по-прежнему работать правильно в течение 0,1 BTC, или же она подвергать bitcoind к проблеме с изображением этой суммы в двоичной системе (что сделало бы его усеченный, как 0.09999999 BTC)? Это исправление должно по крайней мере быть уверены, округлить в 8 знаков после запятой, если не читать цифры непосредственно в int64.
Преобразование из двойной точности поплавка из библиотеки JSON к Int64 Bitcoin является:
Int64 nAmount = roundint64 (dAmount * МОНЕТКА);
... которая всегда будет делать правильные вещи (МОНЕТА является 100000000).
Int64 в формате JSON строки нет никаких изменений коды.
GUI строка int64 является прямым преобразованием, нет промежуточной двойной точности.
И int64 в GUI струны:
strprintf ("% .08f", Двойная (сумма) / двойная (монета))
... который также всегда делает правильно (Printf плавучего номера точки раундов, и есть достаточно точности в двойном округлении всегда будет правильно).
0.1 Bitcoins всегда будет точно 10000000 базовые блоки внутренне и 10000000 базовые блоки всегда будут показаны как точно 0,10 (в GUI) или 0.10000000 (в формате JSON).