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

การจัดการจุดลอยตัวของ C++


การนำตัวเลขทศนิยมไปใช้คือจำนวนจุดทศนิยม ในภาษาโปรแกรม C++ ขนาดของ float คือ 32 บิต และมีบางฟังก์ชันการจัดการจุดลอยตัวที่ทำงานบนตัวเลขทศนิยม เราได้แนะนำฟังก์ชันการจัดการจุดลอยตัวบางส่วน

fmod()

ฟังก์ชัน fmod() ที่ทำงานบน floats จะคืนค่าส่วนที่เหลือของการแบ่งอาร์กิวเมนต์ที่ส่งผ่านของเมธอด

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main() {
   float a, b, rem;
   a = 23.4;
   b = 4.1;
   rem = fmod(a,b);
   cout<<"The value of fmod( "<<a<<" , "<<b<<" ) = "<<rem;
}

ผลลัพธ์

The value of fmod( 23.4 , 4.1 ) = 2.9

เหลือ()

ส่วนที่เหลือ () ฟังก์ชั่นทำงานเหมือนกับฟังก์ชั่น fmod และคืนค่าส่วนที่เหลือของการหารระหว่างค่าต่างๆ เมธอดนี้ส่งคืนเศษเหลือขั้นต่ำที่เป็นไปได้ในรูปของค่าตัวเลข มันอาจจะลบก็ได้

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main() {
   float a, b, rem;
   a = 23.4;
   b = 4.1;
   rem = remainder(a,b);
   cout<<"The value of remainder( "<<a<<" , "<<b<<" ) = "<<rem;
}

ผลลัพธ์

The value of remainder( 23.4 , 4.1 ) = -1.2

remquo()

เมธอดนี้ส่งคืนผลหารและค่าที่เหลือของทั้งสองค่าที่ส่งผ่าน และยังต้องการการอ้างอิงไปยังตัวแปรที่จะมีค่าของผลหาร ดังนั้น เมธอดนี้จะคืนค่าส่วนที่เหลือเหมือนกับฟังก์ชันที่เหลือและการอ้างอิงของผลหาร

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main() {
   float a, b, rem;
   int quo;
   a = 23.4;
   b = 4.1;
   rem = remquo(a,b,&quo);
   cout<<a<<" and "<<b<<" passed to the remquo() function gives the following output\n";
   cout<<"The remainder is "<<rem<<endl;
   cout<<"The quotient is "<<quo;
}

ผลลัพธ์

23.4 and 4.1 pass to the the remque() function gives the following
output
The reminder is -1.2
The quotient is 6

copysign()

ฟังก์ชัน copysign ของ C จะคืนค่าตัวแปรที่มีเครื่องหมายของตัวแปรอื่นๆ ตัวแปรที่ส่งคืนจะมีขนาดของตัวแปรตัวแรกและเครื่องหมายของตัวแปรตัวที่สอง

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main(){
   double a, b;
   a = 9.6;
   b = -3.5;
   cout<<"copysign function with inputs "<<a<<" and "<<b<<" is "<<copysign(a,b);
}

ผลลัพธ์

Copysign function with inputs 9.6 and -3.5 is -9.6

fmin()

ฟังก์ชัน fmin ดังที่คุณเห็นจากชื่อส่งกลับค่าที่น้อยที่สุดของอาร์กิวเมนต์ทั้งสองของฟังก์ชัน ประเภทผลตอบแทนเป็นแบบทุ่นลอย

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main(){
   double a, b;
   a = 43.5;
   b = 21.2;
   cout << "The smallest of "<<a<<" and "<<b<<" is "; cout << fmin(a,b)<<endl;
}

ผลลัพธ์

The smallest of 43.5 and 21.2 is 21.2

fmax()

ฟังก์ชัน fmax คือฟังก์ชันการเขียนโปรแกรม C ที่ส่งกลับจำนวนที่มากที่สุดของตัวเลขสองตัวในอาร์กิวเมนต์

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main(){
   double a, b;
   a = 43.5;
   b = 21.2;
   cout << "The largest of "<<a<<" and "<<b<<" is "; cout << fmax(a,b)<<endl;
}

ผลลัพธ์

The largest of 43.5 and 21.2 is 43.5

fdim()

ฟังก์ชัน fdim() ของภาษาซีจะคืนค่าความแตกต่างที่แน่นอนของตัวเลขสองตัวที่ส่งเป็นอาร์กิวเมนต์ของฟังก์ชัน

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main(){
   double a, b;
   a = 43.5;
   b = 21.2;
   cout << "The absolute difference of "<<a<<" and "<<b<<" is";
   cout << fdim(a,b)<<endl;
}

ผลลัพธ์

The absolute difference of 43.5 and 21.2 is 22.3

fma()

fma() ฟังก์ชันของ C คืนค่าการคูณของอาร์กิวเมนต์ที่กำหนด ฟังก์ชันส่งกลับค่าทศนิยมและยอมรับอาร์กิวเมนต์ลอยตัวสามอาร์กิวเมนต์

ตัวอย่าง

#include <iostream>
#include <cmath>
using namespace std;
int main(){
   double a, b, c;
   a = 3.5;
   b = 2.4;
   c = 7.2;
   cout << "The multiplication of "<<a<<" , "<<b<<" and "<<c<<" is ";
   cout << fma(a,b,c)<<endl;
}

ผลลัพธ์

The multiplication of 3.5 , 2.4 and 7.2 is 15.6

นี่คือฟังก์ชันทั้งหมดที่ทำงานบน ลอย -ตัวเลขจุด นี่คือฟังก์ชันที่กำหนดไว้ในไลบรารี cmath