Get correct Token balance

Following is my ASA balance function developed using python SDK

    account_info = algod_client.account_info(account_address)
    for a in account_info["assets"] : 
        if (a['asset-id'] == token_ID):
            return (a['amount'])

ASA has decimal: 4
In return I get Token Balance as 79

Where as expected is 0.0079

If anyone can help what has to be done, please do.

Since the number of decimals is 4, you need to divide the number you got (79) by 10,000 (=10^4). This way you get 0.0079.

Great thanks it worked.
Just another querry regarding ASA
Following is transfer of ASA `def transfertoken(sender,sender_private_key,purchaser_address,amt,asset_id):

transfer asset of 10 from account 1 to account 3

params = algod_client.suggested_params()
# comment these two lines if you want to use suggested params
params.fee = 1000
params.flat_fee = True
txn = AssetTransferTxn(
stxn = txn.sign(sender_private_key)
txid = algod_client.send_transaction(stxn)
# print(txid)
# Wait for the transaction to be confirmed
stxd = wait_for_confirmation(algod_client, txid)
# The balance should now be 10.
print_asset_holding(algod_client, purchaser_address, asset_id)
return txid,stxd`

Transfer for whole number works fine but for float it gives error

File "/home/ubuntu/.local/lib/python3.6/site-packages/algosdk/future/", line 1323, in __init__
    raise error.WrongAmountType

You must multiply the amount by the 10 power decimal before preparing the transaction.

EX: if you want to transfer 1.2, and the decimal of the asset is 1, then you need to do:
1.2 * 10 power 1, which makes it 12.

1 Like