URI: 
       tdon't use floats because of rounding errors - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 679efe2a6683a52539950697b240af082ac9ede0
   DIR parent 23868d5769343ac3f5192831ca79923db1452cf6
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue, 15 Dec 2015 11:33:04 +0100
       
       don't use floats because of rounding errors
       
       Diffstat:
         M lib/commands.py                     |       9 +++++----
         M lib/util.py                         |       2 +-
       
       2 files changed, 6 insertions(+), 5 deletions(-)
       ---
   DIR diff --git a/lib/commands.py b/lib/commands.py
       t@@ -565,7 +565,7 @@ class Commands:
                return map(self._format_request, out)
        
            @command('w')
       -    def addrequest(self, requested_amount, memo='', expiration=60*60, force=False):
       +    def addrequest(self, amount, memo='', expiration=60*60, force=False):
                """Create a payment request."""
                addr = self.wallet.get_unused_address(None)
                if addr is None:
       t@@ -573,7 +573,7 @@ class Commands:
                        addr = self.wallet.create_new_address(None, False)
                    else:
                        return False
       -        amount = int(Decimal(requested_amount)*COIN)
       +        amount = int(COIN*Decimal(amount))
                expiration = int(expiration)
                req = self.wallet.make_payment_request(addr, amount, memo, expiration)
                self.wallet.add_payment_request(req, self.config)
       t@@ -664,6 +664,7 @@ command_options = {
        }
        
        
       +# don't use floats because of rounding errors
        arg_types = {
            'num':int,
            'nbits':int,
       t@@ -671,8 +672,8 @@ arg_types = {
            'pubkeys': json.loads,
            'inputs': json.loads,
            'outputs': json.loads,
       -    'tx_fee': lambda x: float(x) if x is not None else None,
       -    'amount': lambda x: float(x) if x!='!' else '!',
       +    'tx_fee': lambda x: str(Decimal(x)) if x is not None else None,
       +    'amount': lambda x: str(Decimal(x)) if x!='!' else '!',
        }
        
        config_variables = {
   DIR diff --git a/lib/util.py b/lib/util.py
       t@@ -147,7 +147,7 @@ def json_encode(obj):
        
        def json_decode(x):
            try:
       -        return json.loads(x)
       +        return json.loads(x, parse_float=decimal.Decimal)
            except:
                return x