> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hedera.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HBAR

| **Constructor**      | **Type** | **Description**             |
| -------------------- | -------- | --------------------------- |
| `new Hbar(<amount>)` | Hbar     | Initializes the Hbar object |

```java theme={null}
new Hbar(<amount>)
```

## HBAR from:

Construct ***HBAR*** from different representations.

| **Method**                      | **Type**                     | **Description**                                                 |
| ------------------------------- | ---------------------------- | --------------------------------------------------------------- |
| `Hbar.from(<hbars>)`            | long / BigDecimal            | Returns an Hbar whose value is equal to the specified value     |
| `Hbar.from(<hbars, unit>)`      | long / BigDecimal , HbarUnit | Returns an Hbar representing the value in the given units       |
| `Hbar.fromString(<text>)`       | CharSequence                 | Converts the provided string into an amount of hbars            |
| `Hbar.fromString(<text, unit>)` | CharSequence, HbarUnit       | Converts the provided string into an amount of hbars            |
| `Hbar.fromTinybars(<tinybars>)` | long                         | Returns an Hbar converted from the specified number of tinybars |

<CodeGroup>
  ```java Java theme={null}
  //10 HBAR
  new Hbar(10);

  //10 HBAR from hbar value
  Hbar.from(10);

  //100 tinybars from HBAR convert to unit
  Hbar.from(100, HbarUnit.TINYBAR);

  // 10 HBAR converted from string value
  Hbar.fromString("10");

  //100 tinybars from string value
  Hbar.fromString("10", HbarUnit.TINYBAR);

  // v2.0.0+
  ```

  ```javascript JavaScript theme={null}
  // 10 HBAR
  new Hbar(10);

  //10 HBAR
  Hbar.from(10);

  //100 tinybars
  Hbar.from(100, HbarUnit.TINYBAR);

  // 10 HBAR converted from string value
  Hbar.fromString("10");

  //100 tinybars from string value
  Hbar.fromString("100", HbarUnit.TINYBAR);
  ```

  ```go Go theme={null}
  //100 HBAR
  hedera.NewHbar(10)

  //100 tinybars
  hedera.HbarFrom(10, hedera.HbarUnits.Tinybar)

  // v2.0.0+
  ```

  ```rust Rust theme={null}
  // 10 HBAR
  Hbar::new(10);

  // 10 HBAR from hbar value
  Hbar::from(10);

  // 100 tinybars from HBAR convert to unit
  Hbar::from_tinybars(100);

  // 10 HBAR converted from string value
  Hbar::from_str("10")?;

  // v0.34.0
  ```
</CodeGroup>

### HBAR to:

Convert ***HBAR*** to a different unit/format.

| **Method**         | **Type** | **Description**                                                     |
| ------------------ | -------- | ------------------------------------------------------------------- |
| `to(<unit>)`       | HbarUnit | Specify the unit of hbar to convert to. Use `As` for Go.            |
| `toString(<unit>)` | HbarUnit | String value of the hbar unit to convert to. Use `String()` for Go. |
| `toTinybars()`     | Long     | Hbar value converted to tinybars                                    |

<CodeGroup>
  ```java Java theme={null}
  //10 HBAR converted to tinybars
  new Hbar(10).to(HbarUnit.TINYBAR);

  //10 HBAR converted to tinybars
  new Hbar(10).toString(HbarUnit.TINYBAR);

  //10 HBAR converted to tinybars
  new Hbar(10).toTinybars();

  // v2.0.0+
  ```

  ```javascript JavaScript theme={null}
  //10 HBAR converted to tinybars
  new Hbar(10).to(HbarUnit.TINYBAR);

  //10 HBAR converted to tinybars
  new Hbar(10).toString(HbarUnit.TINYBAR);

  //10 HBAR converted to tinybars
  new Hbar(10).toTinybars();
  ```

  ```go Go theme={null}
  //10 HBAR converted to tinybars
  hedera.NewHbar(10).As(hedera.HbarUnits.Tinybar)

  //10 HBAR to string format
  hedera.NewHbar(10).String()

  //10 HBAR converted to tinybars
  hedera.NewHbar(10).AsTinybar()
  // v2.0.0+
  ```

  ```rust Rust theme={null}
  // 10 HBAR converted to tinybars
  Hbar::new(10).to(HbarUnit::Tinybar);

  // 10 HBAR converted to tinybars
  Hbar::new(10).to_tinybars();

  // v0.34.0
  ```
</CodeGroup>

## **HBAR** constants:

Provided constant values of ***HBAR***.

| **Method**  | **Type** | **Description**                                                            |
| ----------- | -------- | -------------------------------------------------------------------------- |
| `Hbar.MAX`  | Hbar     | A constant value of the maximum number of hbars (50\_000\_000\_000 hbars)  |
| `Hbar.MIN`  | Hbar     | A constant value of the minimum number of hbars (-50\_000\_000\_000 hbars) |
| `Hbar.ZERO` | Hbar     | A constant value of zero hbars                                             |

<CodeGroup>
  ```java Java theme={null}
  //The maximum number of hbars
  Hbar hbarMax = Hbar.MAX; 

  //The minimum number of hbars
  Hbar hbarMin = Hbar.MIN;

  //A constant value of zero hbars
  Hbar hbarZero = Hbar.ZERO; 

  // v2.0.0+
  ```

  ```javascript JavaScript theme={null}
  //The maximum number of hbars
  const hbarMax = Hbar.MAX; 

  //The minimum number of hbars
  const hbarMin = Hbar.MIN;

  //A constant value of zero hbars
  const hbarZero = Hbar.ZERO;
  ```

  ```go Go theme={null}
  //The maximum number of hbars
  hbarMax := hedera.MaxHbar

  //The minimum number of hbars
  hbarMin := hedera.MinHbar

  //A constant value of zero hbars
  hbarZero := hedera.ZeroHbar

  // v2.0.0+
  ```

  ```rust Rust theme={null}
  // The maximum number of hbars
  let hbar_max = Hbar::MAX;

  // The minimum number of hbars
  let hbar_min = Hbar::MIN;

  // A constant value of zero hbars
  let hbar_zero = Hbar::ZERO;

  // v0.34.0
  ```
</CodeGroup>

## **HBAR** units

Modify the ***HBAR*** representation to one of the ***HBAR*** denominations.

| **Function**        | **Description**                                                         |
| ------------------- | ----------------------------------------------------------------------- |
| `HbarUnit.TINYBAR`  | The atomic (smallest) unit of hbar, used natively by the Hedera network |
| `HbarUnit.MICROBAR` | Equivalent to 100 tinybar or 1⁄1,000,000 hbar.                          |
| `HbarUnit.MILLIBAR` | Equivalent to 100,000 tinybar or 1⁄1,000 hbar                           |
| `HbarUnit.HBAR`     | The base unit of hbar, equivalent to 100 million tinybar.               |
| `HbarUnit.KILOBAR`  | Equivalent to 1 thousand hbar or 100 billion tinybar.HbarUnit.Megabar   |
| `HbarUnit.MEGABAR`  | Equivalent to 1 million hbar or 100 trillion tinybar.                   |
| `HbarUnit.GIGABAR`  | Equivalent to 1 billion hbar or 100 quadrillion tinybar.                |

<CodeGroup>
  ```java Java theme={null}
  //100 tinybars
  Hbar.from(100, HbarUnit.TINYBAR);

  // v2.0.0+
  ```

  ```javascript JavaScript theme={null}
  //100 tinybars
  Hbar.from(100, HbarUnit.TINYBAR);

  // v2.0.0+
  ```

  ```go Go theme={null}
  //100 tinybars
  hedera.HbarFrom(100, hedera.HbarUnits.Tinybar)

  // v2.0.0+
  ```
</CodeGroup>

## HBAR decimal places

The decimal precision of ***HBAR*** varies across the different Hedera APIs. While HAPI, JSON-RPC Relay, and Hedera Smart Contract Service (EVM) provide 8 decimal places, the **`msg.value`** in JSON-RPC Relay provides 18 decimal places.

<table><thead><tr><th>API</th><th>Decimal</th></tr></thead><tbody><tr><td>Hedera API (HAPI) (Crypto + SCS Service (<code>msg.value</code>))</td><td>8</td></tr><tr><td>Hedera Smart Contract Service (EVM)</td><td>8</td></tr><tr><td>JSON RPC Relay (passed as arguments)</td><td>8</td></tr><tr><td>JSON RPC Relay (<code>msg.value</code>)</td><td>18</td></tr></tbody></table>

<Warning>
  ***Note:** The JSON-RPC Relay **`msg.value`** uses 18 decimals when it returns HBAR. As a result, the **`gasPrice`** also uses 18 decimal places since it is only utilized from the JSON-RPC Relay.*
</Warning>
