Float dan Format Presisi

Tipe data Float adalah sebutan untuk tipe data pecahan dalam bahasa C++. Tipe data lain yang bisa menyimpan pecahan desimal adalah double dan long double. Bedanya ada pada ukuran dan presisinya. Tipe double dan long double punya ukuran yang lebih besar daripada float.

Pemisah bagian bulat dan pecahan dalam bahasa C++ adalah tanda titik (.), misalnya 1.5. Tentu saja, kalian tidak bisa menggunakan koma seperti format penulisan yang biasa digunakan di Indonesia.

#include <iostream>

int main(){
    float a1=256.345;
    double a2=123.4;
    long double a3;
    
    std::cout << "Angka pertama : " << a1 << std::endl;
    std::cout << "Angka kedua : " << a2 << std::endl;
    a3 = a1 /a2;
    std::cout << "a1 / a2 = " << a3;
}
Output :
Angka pertama : 256.345
Angka kedua : 123.4
a1 / a2 = 2.07735

Contoh di atas berisi deklarasi, operasi pembagian dan pencetakan output menggunakan pecahan desimal. Cout dalam bahasa C++ akan menampilkan pecahan desimal apa adanya (dengan mengabaikan nol di ujung kanan pada bagian pecahan). Itu berbeda dengan printf milik bahasa C yang hasilnya bergantung pada format specifier.

Format dan Presisi Pecahan

Saat menggunakan cout, bagian pecahan dari angka akan ditampilkan sesuai deklarasinya atau sebanyak mungkin tanpa rangkaian 0 di ujung kanannya. Jika kalian ingin membatasi jumlah digit pecahan, kalian bisa menggunakan setprecision yang ada di header <iomanip>.

#include <iostream>
#include <iomanip>

using namespace std;
int main(){
    float a1=256.345;
    
    cout << setprecision (2) << a1 << endl;
    cout << setprecision (3) << a1 << endl;
    cout << setprecision (4) << a1 << endl;
    cout << setprecision (5) << a1;
}
Output :
2.6e+02
256
256.3
256.35

Contoh di atas mengatur digit maksimal menjadi hanya 3 digit dengan setprecision. Kalau jumlah digit terlalu banyak, maka bagian pecahannya akan dibuang beberapa angka. Kalau digitnya kurang, hasilnya akan ditulis dengan format eksponen.

Bagian Bulat dan Pecahan

Untuk mendapatkan bagian bulat dari suatu bilangan, kalian bisa menggunakan floor. Untuk mendapatkan pecahannya, kalian butuh cara yang sedikit panjang karena tidak ada function bawaan C++ yang digunakan untuk itu.

#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

#define jdigit 2

int main(){
    float bil=256.34567;
    float p10=pow(10, jdigit);
    
    cout << floor(bil);//bagian bulat
    cout << ".";
    cout << floor(bil*p10)-(floor(bil)*p10) << endl;//bagian pecahan
}
Output :
256.65

Kalian butuh header cmath agar bisa menggunakan function floor.