我正在使用Bitcoin RPC客户端的Java实现。
当我用int调用createRawTransaction
时,按预期方式创建的原始事务:
BitcoindRpcClient.TxOutput txOut1 = new BitcoindRpcClient.BasicTxOutput(issuerAddress,
new BigDecimal(1));
当我尝试使用双精度值而不是int时:
BitcoindRpcClient.TxOutput txOut1 = new BitcoindRpcClient.BasicTxOutput(issuerAddress,
new BigDecimal(1.2));
我收到此错误:invalid amount
。
当我使用bitcoin-cli
进行尝试时,它会按预期工作。
注意:我正在研究本地测试网区块链
答案 0 :(得分:0)
输出:
System.out.println(new BigDecimal(1.2));
System.out.println(BigDecimal.valueOf(1.2));
是:
1.1999999999999999555910790149937383830547332763671875
1.2
因此简短的答案是使用首选的方式来转换双精度:BigDecimal.valueOf(1.2)
长答案是浮点数很复杂,double
是1.2的近似值