Class Coin
- All Implemented Interfaces:
 Comparable<Coin>,Monetary
Coin class wherever possible to represent Bitcoin monetary values. If you have existing
 code that uses other numeric types and need to convert there are conversion methods.
 
 Internally Coin is implemented as a long (see value) that represents a number of satoshis. It
 can also be considered a fixed-point number of bitcoins.
 
 To create a Coin from an integer number of satoshis, use ofSat(long). To convert to a long number
 of satoshis use toSat(). (You can also use valueOf(long), getValue() or value.)
 
 To create a Coin from a decimal number of bitcoins, use ofBtc(BigDecimal). To convert to a BigDecimal
 of bitcoins use toBtc(). (Performing fixed-point conversion, these methods essentially multiply or divide by Coin.COIN.toSat().)
 
 Never ever use float or double to represent monetary values.
- 
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intNumber of bytes to store this amount.static final Coin0.01 Bitcoins.static final CoinOne Bitcoin.static final Coinstatic final Coin0.000001 Bitcoins, also known as 1 µBTC or 1 uBTC.static final Coin0.001 Bitcoins, also known as 1 mBTC.static final CoinRepresents a monetary value of minus one satoshi.static final CoinA satoshi is the smallest unit that can be transferred.static final intNumber of decimals for one Bitcoin.final longThe number of satoshis of this monetary value.static final CoinZero Bitcoins. - 
Method Summary
Modifier and TypeMethodDescriptionstatic longbtcToSatoshi(BigDecimal coins) Convert a decimal amount of BTC into satoshis.intdiv(int divisor) Alias for dividediv(long divisor) Alias for dividedivide(long divisor) longCoin[]divideAndRemainder(long divisor) booleanlonggetValue()Returns the number of satoshis of this monetary value.inthashCode()booleanisGreaterThan(Coin other) Returns true if the monetary value represented by this instance is greater than that of the given other Coin, otherwise false.booleanisLessThan(Coin other) Returns true if the monetary value represented by this instance is less than that of the given other Coin, otherwise false.booleanReturns true if and only if this instance represents a monetary value less than zero, otherwise false.booleanReturns true if and only if this instance represents a monetary value greater than zero, otherwise false.booleanisZero()Returns true if and only if this instance represents zero monetary value, otherwise false.longReturns the number of satoshis of this monetary value.Alias for subtractmultiply(long factor) negate()static CoinofBtc(BigDecimal coins) Create aCoinfrom a decimal amount of BTC.static CoinofSat(long satoshis) Create aCoinfrom a long integer number of satoshis.static CoinCreate aCoinby parsing aStringamount expressed in "the way humans are used to".static CoinparseCoinInexact(String str) Create aCoinby parsing aStringamount expressed in "the way humans are used to".Alias for addstatic Coinread(ByteBuffer buf) Read a Coin amount from the given buffer as 8 bytes in little-endian order.static BigDecimalsatoshiToBtc(long satoshis) Convert an amount in satoshis to an amount in BTC.byte[]Allocates a byte array and serializes the amount.shiftLeft(int n) shiftRight(int n) intsignum()intReturns the absolute value of exponent of the value of a "smallest unit" in scientific notation.times(int factor) Alias for multiplytimes(long factor) Alias for multiplytoBtc()Convert to number of bitcoin (in BTC)Returns the value as a 0.12 type string.Returns the value as a plain string denominated in BTC.longtoSat()Convert to number of satoshistoString()static CoinvalueOf(int coins, int cents) Create aCoinfrom an amount expressed in "the way humans are used to".static CoinvalueOf(long satoshis) Create aCoinfrom a long integer number of satoshis.write(ByteBuffer buf) Write the amount into the given buffer as 8 bytes in little-endian order. 
- 
Field Details
- 
SMALLEST_UNIT_EXPONENT
public static final int SMALLEST_UNIT_EXPONENTNumber of decimals for one Bitcoin. This constant is useful for quick adapting to other coins because a lot of constants derive from it.- See Also:
 
 - 
ZERO
Zero Bitcoins. - 
COIN
One Bitcoin. - 
CENT
0.01 Bitcoins. This unit is not really used much. - 
MILLICOIN
0.001 Bitcoins, also known as 1 mBTC. - 
MICROCOIN
0.000001 Bitcoins, also known as 1 µBTC or 1 uBTC. - 
SATOSHI
A satoshi is the smallest unit that can be transferred. 100 million of them fit into a Bitcoin. - 
FIFTY_COINS
 - 
NEGATIVE_SATOSHI
Represents a monetary value of minus one satoshi. - 
BYTES
public static final int BYTESNumber of bytes to store this amount.- See Also:
 
 - 
value
public final long valueThe number of satoshis of this monetary value. 
 - 
 - 
Method Details
- 
valueOf
Create aCoinfrom a long integer number of satoshis.- Parameters:
 satoshis- number of satoshis- Returns:
 Coinobject containing value in satoshis
 - 
read
Read a Coin amount from the given buffer as 8 bytes in little-endian order.- Parameters:
 buf- buffer to read from- Returns:
 - read amount
 - Throws:
 BufferUnderflowException- if the read value extends beyond the remaining bytes of the buffer
 - 
smallestUnitExponent
public int smallestUnitExponent()Description copied from interface:MonetaryReturns the absolute value of exponent of the value of a "smallest unit" in scientific notation. For Bitcoin, a satoshi is worth 1E-8 so this would be 8.- Specified by:
 smallestUnitExponentin interfaceMonetary
 - 
getValue
public long getValue()Returns the number of satoshis of this monetary value. - 
valueOf
Create aCoinfrom an amount expressed in "the way humans are used to".- Parameters:
 coins- Number of bitcoinscents- Number of bitcents (0.01 bitcoin)- Returns:
 Coinobject containing value in satoshis
 - 
btcToSatoshi
Convert a decimal amount of BTC into satoshis.- Parameters:
 coins- number of coins- Returns:
 - number of satoshis
 - Throws:
 ArithmeticException- if value has too much precision or will not fit in a long
 - 
satoshiToBtc
Convert an amount in satoshis to an amount in BTC.- Parameters:
 satoshis- number of satoshis- Returns:
 - number of bitcoins (in BTC)
 
 - 
ofBtc
Create aCoinfrom a decimal amount of BTC.- Parameters:
 coins- number of coins (in BTC)- Returns:
 Coinobject containing value in satoshis- Throws:
 ArithmeticException- if value has too much precision or will not fit in a long
 - 
ofSat
Create aCoinfrom a long integer number of satoshis.- Parameters:
 satoshis- number of satoshis- Returns:
 Coinobject containing value in satoshis
 - 
parseCoin
Create aCoinby parsing aStringamount expressed in "the way humans are used to".- Parameters:
 str- string in a format understood byBigDecimal(String), for example "0", "1", "0.10", * "1.23E3", "1234.5E-5".- Returns:
 Coinobject containing value in satoshis- Throws:
 IllegalArgumentException- if you try to specify fractional satoshis, or a value out of range.
 - 
parseCoinInexact
Create aCoinby parsing aStringamount expressed in "the way humans are used to". The amount is cut to satoshi precision.- Parameters:
 str- string in a format understood byBigDecimal(String), for example "0", "1", "0.10", * "1.23E3", "1234.5E-5".- Returns:
 Coinobject containing value in satoshis- Throws:
 IllegalArgumentException- if you try to specify a value out of range.
 - 
add
 - 
plus
Alias for add - 
subtract
 - 
minus
Alias for subtract - 
multiply
 - 
times
Alias for multiply - 
times
Alias for multiply - 
divide
 - 
div
Alias for divide - 
div
Alias for divide - 
divideAndRemainder
 - 
divide
 - 
isPositive
public boolean isPositive()Returns true if and only if this instance represents a monetary value greater than zero, otherwise false. - 
isNegative
public boolean isNegative()Returns true if and only if this instance represents a monetary value less than zero, otherwise false. - 
isZero
public boolean isZero()Returns true if and only if this instance represents zero monetary value, otherwise false. - 
isGreaterThan
Returns true if the monetary value represented by this instance is greater than that of the given other Coin, otherwise false. - 
isLessThan
Returns true if the monetary value represented by this instance is less than that of the given other Coin, otherwise false. - 
shiftLeft
 - 
shiftRight
 - 
signum
public int signum() - 
negate
 - 
longValue
public long longValue()Returns the number of satoshis of this monetary value. It's deprecated in favour of accessingvaluedirectly. - 
toSat
public long toSat()Convert to number of satoshis- Returns:
 - decimal number of satoshis
 
 - 
toBtc
Convert to number of bitcoin (in BTC)- Returns:
 - decimal number of bitcoin (in BTC)
 
 - 
write
Write the amount into the given buffer as 8 bytes in little-endian order.- Parameters:
 buf- buffer to write into- Returns:
 - the buffer
 - Throws:
 BufferOverflowException- if the value doesn't fit the remaining buffer
 - 
serialize
public byte[] serialize()Allocates a byte array and serializes the amount.- Returns:
 - serialized amount
 
 - 
toFriendlyString
Returns the value as a 0.12 type string. More digits after the decimal place will be used if necessary, but two will always be present. - 
toPlainString
Returns the value as a plain string denominated in BTC. The result is unformatted with no trailing zeroes. For instance, a value of 150000 satoshis gives an output string of "0.0015" BTC
 - 
toString
 - 
equals
 - 
hashCode
public int hashCode() - 
compareTo
- Specified by:
 compareToin interfaceComparable<Coin>
 
 -