/** * <p>Convert the given satoshi value into a symbolic amount <strong>suitable for display only</strong>.</p> * <p>The result is scaled so that decimals are dropped making it unsuitable for calculations.</p> * * @param coin The coin value (e.g. 150 000) * @param bitcoinSymbol The Bitcoin symbol to use for the multiplier * * @return A Bitcoin amount expressed in terms of the current symbolic multiplier (e.g. "1.5" in mBTC) */ public static BigDecimal toSymbolicAmount(Coin coin, BitcoinSymbol bitcoinSymbol) { Preconditions.checkNotNull(coin, "'coin' must be present"); // Convert to plain string String plainString = coin.toPlainString(); // Apply the current symbolic multiplier BigDecimal symbolicAmount = new BigDecimal(plainString) .setScale(BITCOIN_SCALE) .multiply(bitcoinSymbol.multiplier()); // Reduce the scale to match the multiplier return symbolicAmount.setScale(bitcoinSymbol.decimalPlaces()); }
builder.append(amount.toPlainString()); questionMarkHasBeenOutput = true;
builder.append(amount.toPlainString()); questionMarkHasBeenOutput = true;
builder.append(amount.toPlainString()); questionMarkHasBeenOutput = true;
builder.append(amount.toPlainString()); questionMarkHasBeenOutput = true;
@Override public ListenableFuture<ByteString> paymentIncrease(Coin by, Coin to, @Nullable ByteString info) { q.add(new UpdatePair(to, info)); return Futures.immediateFuture(ByteString.copyFromUtf8(by.toPlainString())); }
public static BigDecimal convert(BigDecimal value, BitcoinUnit unitFrom, BitcoinUnit unitTo) throws BitcoinUnitConversionNotImplementedException { if (unitFrom.equals(BitcoinUnit.SATOSHI) && unitTo.equals(BitcoinUnit.COIN)) { return new BigDecimal(Coin.valueOf(value.longValueExact()).toPlainString()); } if (unitFrom.equals(BitcoinUnit.COIN) && unitTo.equals(BitcoinUnit.SATOSHI)) { return value.multiply(BitcoinUnit.COIN.getSatoshiFactor()); } throw new BitcoinUnitConversionNotImplementedException( String.format("Converting %s to %s is not implemented.", unitFrom, unitTo)); }
/** * Test the bitcoinValueToPlainString amount formatter */ @Test public void testToPlainString() { assertEquals("0.0015", Coin.valueOf(150000).toPlainString()); assertEquals("1.23", parseCoin("1.23").toPlainString()); assertEquals("0.1", parseCoin("0.1").toPlainString()); assertEquals("1.1", parseCoin("1.1").toPlainString()); assertEquals("21.12", parseCoin("21.12").toPlainString()); assertEquals("321.123", parseCoin("321.123").toPlainString()); assertEquals("4321.1234", parseCoin("4321.1234").toPlainString()); assertEquals("54321.12345", parseCoin("54321.12345").toPlainString()); assertEquals("654321.123456", parseCoin("654321.123456").toPlainString()); assertEquals("7654321.1234567", parseCoin("7654321.1234567").toPlainString()); assertEquals("87654321.12345678", parseCoin("87654321.12345678").toPlainString()); // check there are no trailing zeros assertEquals("1", parseCoin("1.0").toPlainString()); assertEquals("2", parseCoin("2.00").toPlainString()); assertEquals("3", parseCoin("3.000").toPlainString()); assertEquals("4", parseCoin("4.0000").toPlainString()); assertEquals("5", parseCoin("5.00000").toPlainString()); assertEquals("6", parseCoin("6.000000").toPlainString()); assertEquals("7", parseCoin("7.0000000").toPlainString()); assertEquals("8", parseCoin("8.00000000").toPlainString()); } }
@Test public void testSend() throws Exception { WalletAppKit nomKit = bitcoinCryptoNoP.getKit(); Wallet wallet = nomKit.wallet(); System.out.println("Current Receive Address: " + wallet.currentReceiveAddress().toString() + "\nIssued Receive Addresses: \n" + wallet.getIssuedReceiveAddresses().toString() + "\nMnemonic: " + wallet.getActiveKeychain().getMnemonicCode().toString() + "\nWallets Balance: " + wallet.getBalance().toPlainString() + " BTC"); // Get a ready to send TX in its Raw HEX format System.out.println("Raw TX HEX: " + bitcoinCryptoNoP.sendOffline("n2ooxjPCQ19f56ivrCBq93DM6a71TA89bc", 10000)); // Create and send transaciton using the wallets broadcast org.bitcoinj.core.Transaction sentTransaction = bitcoinCryptoNoP.send("n2ooxjPCQ19f56ivrCBq93DM6a71TA89bc", 10000); System.out.println("Transaction sent. Find txid: " + sentTransaction.getHashAsString()); }
@Test public void normalRate() throws Exception { ExchangeRate rate = new ExchangeRate(Fiat.parseFiat("EUR", "500")); assertEquals("0.5", rate.coinToFiat(Coin.MILLICOIN).toPlainString()); assertEquals("0.002", rate.fiatToCoin(Fiat.parseFiat("EUR", "1")).toPlainString()); }
@Test public void smallRate() throws Exception { ExchangeRate rate = new ExchangeRate(Coin.parseCoin("1000"), Fiat.parseFiat("XXX", "0.0001")); assertEquals("0", rate.coinToFiat(Coin.COIN).toPlainString()); // Tiny value! assertEquals("10000000", rate.fiatToCoin(Fiat.parseFiat("XXX", "1")).toPlainString()); }
@Test public void bigRate() throws Exception { ExchangeRate rate = new ExchangeRate(Coin.parseCoin("0.0001"), Fiat.parseFiat("BYR", "5320387.3")); assertEquals("53203873000", rate.coinToFiat(Coin.COIN).toPlainString()); assertEquals("0", rate.fiatToCoin(Fiat.parseFiat("BYR", "1")).toPlainString()); // Tiny value! }
final Protos.PaymentAck paymentAck = msg.getPaymentAck(); assertTrue("No PaymentAck.Info", paymentAck.hasInfo()); assertEquals("Wrong PaymentAck info", ByteString.copyFromUtf8(CENT.toPlainString()), paymentAck.getInfo()); client.receiveMessage(msg); assertTrue(future.isDone()); final PaymentIncrementAck paymentIncrementAck = future.get(); assertEquals("Wrong value returned from increasePayment", CENT, paymentIncrementAck.getValue()); assertEquals("Wrong info returned from increasePayment", ByteString.copyFromUtf8(CENT.toPlainString()), paymentIncrementAck.getInfo());