Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแม่นยำของตัวเลขทศนิยมใน C++ (floor(), ceil(), trunc(), round() และ setprecision())


ความแม่นยำของตัวเลขทศนิยม คือความแม่นยำที่ค่าทศนิยมสามารถเก็บค่าหลังทศนิยมได้

ตัวอย่างเช่น 10/6 =1.6666666… สิ่งเหล่านี้มีทศนิยมที่เกิดซ้ำซึ่งสามารถใช้พื้นที่หน่วยความจำอนันต์ในการจัดเก็บได้

ดังนั้นเพื่อหลีกเลี่ยงหน่วยความจำล้นในกรณีเช่นนี้ คอมไพเลอร์จึงตั้งค่าขีดจำกัดความแม่นยำให้กับตัวเลข สำหรับค่าทศนิยมใน C ++ ความแม่นยำนี้ถูกตั้งค่าเป็น 6-7 หลักหลังจากนั้น หากทศนิยมเกิดซ้ำ ค่านี้จะถูกยกเลิก

ดังนั้น เพื่อหลีกเลี่ยงความสูญเสียที่สำคัญเมื่อการละทิ้งนี้เกิดขึ้น มีวิธีการและไลบรารีที่สนับสนุนความแม่นยำคือค่าทศนิยม เราจะมาพูดคุยกันที่นี่

ชั้น()

ฟังก์ชัน floor() เป็นฟังก์ชันปัดเศษที่ปัดเศษตัวเลขให้เป็นค่าจำนวนเต็มที่ใกล้เคียงที่สุดซึ่งน้อยกว่าตัวเลข

โดยจะส่งคืนค่าจำนวนเต็มซึ่งน้อยกว่าส่วนจำนวนเต็มของจำนวนทศนิยมหนึ่งค่าเสมอ

ห้องสมุด: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() เป็นฟังก์ชันปัดเศษที่ปัดเศษตัวเลขให้เป็นค่าจำนวนเต็มที่ใกล้เคียงที่สุดซึ่งมากกว่าตัวเลข

โดยจะส่งคืนค่าจำนวนเต็มซึ่งมากกว่าส่วนจำนวนเต็มของจำนวนทศนิยมหนึ่งค่าเสมอ

ห้องสมุด: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() เป็นฟังก์ชันปัดเศษที่ปัดเศษตัวเลขให้เป็นค่าจำนวนเต็มที่ใกล้เคียงที่สุดซึ่งอาจมากกว่าหรือน้อยกว่าตัวเลขได้

โดยจะส่งคืนค่าจำนวนเต็มซึ่งสามารถมากกว่าหนึ่ง/น้อยกว่าส่วนจำนวนเต็มของจำนวนทศนิยมได้หนึ่งส่วน

ห้องสมุด: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() ส่งคืนค่าของ flaot ที่ถูกต้องไม่เกินทศนิยม n ตำแหน่ง N คือพารามิเตอร์ที่ส่งผ่านไปยังฟังก์ชัน setprecission

สำหรับการทำงานนั้นจะใช้ค่าคงที่

ห้องสมุด: 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