ความแม่นยำของจำนวนจุดลอยตัว (Precision of floating point numbers) คือความแม่นยำที่จำนวนจุดลอยตัวสามารถเก็บค่าหลังจุดทศนิยมได้
ตัวอย่างเช่น 10/6 = 1.6666666... นี้มีทศนิยมซ้ำซ้อนซึ่งสามารถใช้พื้นที่หน่วยความจำไม่จำกัดได้
ดังนั้นเพื่อป้องกันการล้นหน่วยความจำในกรณีเช่นนี้ คอมไพเลอร์ตั้งค่าขีดจำกัดความแม่นยำให้กับตัวเลข สำหรับค่า float ใน C++ ความแม่นยำนี้ตั้งไว้ที่ 6-7 หลัก หลังจากนั้นถ้าทศนิยมซ้ำ จะทิ้งค่าทิ้ง
ดังนั้น เพื่อป้องกันความสูญเสียร้ายแรงเมื่อการทิ้งค่านี้เกิดขึ้น มีเมธอดและไลบรารีที่รองรับความแม่นยำในค่า float ที่นี่เราจะพูดถึงพวกเขา
floor()
ฟังก์ชัน floor() เป็นฟังก์ชันปัดลงที่ปัดตัวเลขเป็นค่าจำนวนเต็มที่ใกล้ที่สุดซึ่งน้อยกว่าตัวเลข
มันจะคืนค่าจำนวนเต็มที่น้อยกว่าส่วนจำนวนเต็มของ float number หนึ่ง
Library: math.h
ตัวอย่าง
#include<iostream>
#include<math.h>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
cout<<"Values are : \n";
cout<<"Number 1 : "<<floor(number1)<<endl;
cout<<"Number 2 : "<<floor(number2)<<endl;
cout<<"Number 3 : "<<floor(number3)<<endl;
cout<<"Number 4 : "<<floor(number4)<<endl;
return 0;
}
ผลลัพธ์
Values are : Number 1 : 0 Number 2 : 234 Number 3 : -4 Number 4 : -1
ceil()
ฟังก์ชัน ceil() เป็นฟังก์ชันปัดที่ปัดตัวเลขเป็นค่าจำนวนเต็มที่ใกล้ที่สุดซึ่งมากกว่าตัวเลข
มันจะคืนค่าจำนวนเต็มที่มากกว่าส่วนจำนวนเต็มของ float number หนึ่ง
Library: math.h
ตัวอย่าง
#include<iostream>
#include<math.h>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.2342, number3 = -3.31132, number4 = -0.432;
cout<<"Values are : \n";
cout<<"Number 1 : "<<ceil(number1)<<endl;
cout<<"Number 2 : "<<ceil(number2)<<endl;
cout<<"Number 3 : "<<ceil(number3)<<endl;
cout<<"Number 4 : "<<ceil(number4)<<endl;
return 0;
}
ผลลัพธ์
Values are : Number 1 : 1 Number 2 : 235 Number 3 : -3 Number 4 : -0
round()
ฟังก์ชัน round() เป็นฟังก์ชันปัดที่ปัดตัวเลขเป็นค่าจำนวนเต็มที่ใกล้ที่สุดซึ่งอาจมากกว่าหรือน้อยกว่าตัวเลข
มันจะคืนค่าจำนวนเต็มที่อาจมากกว่าหรือน้อยกว่าส่วนจำนวนเต็มของ float number หนึ่ง
Library: math.h
ตัวอย่าง
#include<iostream>
#include<math.h>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
cout<<"Values are : \n";
cout<<"Number 1 : "<<ceil(number1)<<endl;
cout<<"Number 2 : "<<ceil(number2)<<endl;
cout<<"Number 3 : "<<ceil(number3)<<endl;
cout<<"Number 4 : "<<ceil(number4)<<endl;
return 0;
}
ผลลัพธ์
Values are : Number 1 : 1 Number 2 : 235 Number 3 : -3 Number 4 : -0
setprecision()
ฟังก์ชัน setprecision() คืนค่าของ float ที่ถูกต้องถึง n ตำแหน่งทศนิยม n คือพารามิเตอร์ที่ส่งให้ฟังก์ชัน setprecision
สำหรับการทำงาน ใช้ fixed
Library: iomanip
ตัวอย่าง
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
float number1 = 0.435 , number2 = 234.5612, number3 = -3.31132, number4 = -0.9132;
cout<<"Nubmer 1 correct upto 0 decimals "<<fixed<<setprecision(0)<<number1<<endl;
cout<<"Nubmer 2 correct upto 1 decimals "<<fixed<<setprecision(1)<<number2<<endl;
cout<<"Nubmer 3 correct upto 4 decimals "<<fixed<<setprecision(4)<<number3<<endl;
cout<<"Nubmer 4 correct upto 3 decimals "<<fixed<<setprecision(3)<<number4<<endl;
}
ผลลัพธ์
Nubmer 1 correct upto 0 decimals 0 Nubmer 2 correct upto 1 decimals 234.6 Nubmer 3 correct upto 4 decimals -3.3113 Nubmer 4 correct upto 3 decimals -0.913