C ++での浮動小数点数の精度(floor()、ceil()、trunc()、round()、setprecision())
浮動小数点数の精度 は、浮動小数点数が小数点以下の値を保持できる精度です。
たとえば、10/6 =1.6666666…これらには循環小数があり、格納するのに無限のメモリスペースを必要とする可能性があります。
したがって、このような場合のメモリオーバーフローを回避するために、コンパイラは数値に精度制限を設定します。 C ++のfloat値の場合、この精度は6〜7桁に設定されます。その後、小数が繰り返されると、値が破棄されます。
したがって、この破棄が行われるときに大きな損失を回避するために、精度が浮動小数点値であることをサポートするメソッドとライブラリがあります。ここでは、それらについて説明します
floor()
floor()関数は、数値を数値よりも小さい最も近い整数値に丸める切り捨て関数です。
常に、浮動小数点数の整数部分より1つ小さい整数値を返します。
ライブラリ: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()関数は、数値を数値よりも大きい最も近い整数値に丸める丸め関数です。
常に、浮動小数点数の整数部分より1つ大きい整数値を返します。
ライブラリ: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()関数は、数値を最も近い整数値に丸める丸め関数です。整数値は、数値よりも大きい場合も小さい場合もあります。
常に、浮動小数点数の整数部分より1つ多い/少ない整数値を返します。
ライブラリ: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()関数は、小数点以下n桁まで正しいflaotの値を返します。 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
-
C++でのデュードニー番号
与えられた数の底の数理論で定義された数は、最初の自然数の桁の合計が2番目の数の桁の合計に等しくなるように、別の自然数の完全な3乗に等しい自然数です。 (ウィキペディア)。 番号はヘンリー・デュードニーによって発見されました 。その数式 は- ここでは、整数nが与えられます。私たちの仕事は、与えられた番号nが人物番号であるかどうかを確認することです。 問題を理解するために例を見てみましょう 入力: N =17592 出力: いいえ 説明: 与えられた番号はダドニー番号ではありません。 ソリューションアプローチ- 解決策は、デュードニー番号の基本的な定義にあります。
-
C++のBSTからの床と天井
ここでは、BSTから床と天井の値を見つける方法を説明します。たとえば、空きノードがBSTに配置されているメモリ管理システムを作成する場合です。入力リクエストに最適なものを見つけます。キー値よりも大きい最小のデータでツリーを下に移動するとします。3つのケースが考えられます。 ルートが鍵です。その場合、ルート値は上限値です ルートデータ<キーの場合、上限値は左側のサブツリーにないため、右側のサブツリーに進み、問題のあるドメインを減らします キーの場合、上限値は右側のサブツリーにある可能性があり、左側のサブツリーにキーよりも大きいデータを持つノードが見つかる可能性があります。そのような要素が存在し