---
title: 'Aritmatika'
description: "Operator matematika dasar untuk melakukan perhitungan angka."
navigation:
  icon: 'i-ph-code-block'
seo:
  title: 'Aritmatika'
  description: "Operator matematika dasar untuk melakukan perhitungan angka."
---

## Tinjauan

Operator aritmatika adalah dasar dari semua kalkulasi dalam JSON-Eval-RS. Mereka mendukung operasi matematika standar dengan fitur tambahan seperti input multi-nilai, konversi tipe data otomatis, dan optimasi saat kompilasi.

### Kasus Penggunaan Umum

- **Kalkulasi Keuangan**: Menghitung total harga, pajak, diskon, dan bunga.
- **Agregasi Data**: Menghitung jumlah total atau rata-rata dari sekumpulan data.
- **Konversi Satuan**: Mengubah nilai antar satuan pengukuran yang berbeda.
- **Skoring**: Menghitung skor, rating, atau nilai tertimbang (weighted average).

### Fitur Utama

- **Dukungan Multi-operand**: Sebagian besar operator dapat menerima lebih dari dua nilai sekaligus.
- **Flattening Otomatis**: Operasi bersarang yang sama akan disederhanakan untuk meningkatkan performa.
- **Coercion Tipe Data**: String yang berisi angka atau boolean akan otomatis dikonversi menjadi angka saat digunakan dalam operasi matematika.
- **Penanganan NaN yang Aman**: Dilengkapi dengan `safe_nan_handling` untuk mencegah error saat terjadi pembagian dengan nol atau operasi tidak valid lainnya.

---

## `+` - Penjumlahan

Menjumlahkan semua nilai yang diberikan.

### Sintaks
```json
{"+": [nilai1, nilai2, ...]}
```

### Contoh
```json
{"+": [1, 2, 3]}           // → 6
{"+": [10, "5"]}           // → 15 (string "5" dikonversi otomatis)
```

---

## `-` - Pengurangan

Mengurangi nilai pertama dengan nilai-nilai berikutnya. Jika hanya ada satu nilai, maka akan dianggap sebagai negasi (menjadikan angka tersebut negatif).

### Sintaks
```json
{"-": [nilai1, nilai2, ...]}
{"-": [nilai]}
```

### Contoh
```json
{"-": [10, 3]}             // → 7
{"-": [10, 2, 1]}          // → 7 (10 - 2 - 1)
{"-": [5]}                 // → -5 (negasi)
```

---

## `*` - Perkalian

Mengalikan semua nilai yang diberikan.

### Sintaks
```json
{"*": [nilai1, nilai2, ...]}
```

### Contoh
```json
{"*": [2, 3, 4]}           // → 24
{"*": [{"var": "price"}, 0.1]}  // Menghitung 10% dari harga
```

---

## `/` - Pembagian

Membagi nilai pertama dengan nilai-nilai berikutnya secara berurutan.

### Sintaks
```json
{"/": [pembilang, penyebut, ...]}
```

### Contoh
```json
{"/": [10, 2]}             // → 5
{"/": [10, 0]}             // → null (pembagian dengan nol mengembalikan null)
```

---

## `%` - Modulo (Sisa Bagi)

Mengembalikan sisa hasil bagi dari dua bilangan.

### Sintaks
```json
{"%": [dividend, divisor]}
```

### Contoh
```json
{"%": [7, 3]}              // → 1
{"==": [{"%": [{"var": "num"}, 2]}, 0]} // Cek apakah angka genap
```

---

## `^` / `pow` - Pemangkatan (Eksponensial)

Menghitung hasil pangkat dari suatu bilangan.

### Sintaks
```json
{"^": [base, exponent]}
{"pow": [base, exponent]}
```

### Contoh
```json
{"^": [2, 3]}              // → 8 (2 pangkat 3)
{"pow": [9, 0.5]}          // → 3 (akar kuadrat dari 9)
```

---

## Prioritas Operasi

Untuk memastikan urutan perhitungan yang benar, gunakan struktur array bersarang sebagai pengganti tanda kurung dalam matematika tradisional:

```json
// Menghitung (2 + 3) * 4
{"*": [
  {"+": [2, 3]},
  4
]}
// → 20
```

---

## Praktik Terbaik

1. **Gunakan struktur bersarang secara eksplisit** daripada mengandalkan prioritas implisit agar logika lebih mudah dibaca.
2. **Manfaatkan input array** untuk menjumlahkan banyak variabel sekaligus tanpa perlu menulis tanda `+` berulang kali.
3. **Selalu antisipasi hasil null** jika ada kemungkinan pembagian dengan nol dalam data dinamis Anda.
