在C 中,int型別的變數只能保存正整數或負整數值;它們不能保存小數值。有 float 和 double 值可用於此目的。為了儲存小數點後最多七位的小數,創建了雙精度資料類型。整數到雙精確度資料類型的轉換可以由編譯器自動完成(稱為「隱式」轉換),也可以由程式設計師向編譯器明確要求(稱為「明確」轉換)。在接下來的部分中,我們將介紹各種轉換方法。
編譯器會自動執行隱式類型轉換。要實現這一點,需要兩個變數——一個是浮點類型,另一個是整數類型。當我們簡單地將浮點值或變數指派給整數變數時,編譯器將處理所有其他事情。此轉換存在資料遺失的問題,因為整數變數不能包含小數點後的小數值。
double input = <double value>; int output = input;
#include <iostream> using namespace std; int solve(double value) { int opVal = value; return opVal; } int main() { double ip = 25.3056; int op = solve(ip); cout<< "The input value is: " << ip << endl; cout<< "The output value is: " << op << endl; return 0; }
The input value is: 25.3056 The output value is: 25
正如我們所看到的,轉換過程相當簡單。我們只是將輸入變數分配給輸出變數;不需要額外的程式。另外,可以看出輸出中不存在雙精度值的小數部分。
當程式設計師明確指示編譯器將一種資料型別轉換為另一種資料型別時,稱為明確轉換或明確型別轉換。有兩種方法可以實現此目的:一種是在賦值時明確聲明資料類型,另一種是使用 static_cast。我們之前討論過第一種方法。
有兩種不同的執行方式。一種是 C 風格的版本,另一種是函數風格的轉換。
結果資料類型在來源變數之前指定,並括在括號內。
double input = <double value>; int output = (int) input;
#include <iostream> using namespace std; int solve(double value) { int opVal = (int)value; return opVal; } int main() { double ip = 84.4439; int op = solve(ip); cout<< "The value before conversion: " << ip << endl; cout<< "The value after conversion: " << op << endl; return 0; }
The value before conversion: 84.4439 The value after conversion: 84
當向函數提供參數時,我們會宣告結果資料型別並將來源值括在括號內。
double input = <double value>; int output = int(input);
#include <iostream> using namespace std; int solve(double value) { int opVal = int(value); return opVal; } int main() { double ip = -993.6571; int op = solve(ip); cout<< "The value before conversion: " << ip << endl; cout<< "The value after conversion: " << op << endl; return 0; }
The value before conversion: -993.657 The value after conversion: -993
要在預先定義類型之間進行轉換,請使用靜態強制轉換。此外,這個也可以明確引用的強制轉換負責強制執行隱式型別轉換。
double input = < double value>; int output = static_cast<int>(input);
#include <iostream> using namespace std; int solve(double value) { int opVal = static_cast<int>(value); return opVal; } int main() { double ip = -65.2354; int op = solve(ip); cout<< "The value before conversion: " << ip << endl; cout<< "The value after conversion: " << op << endl; return 0; }
The value before conversion: -65.2354 The value after conversion: -65
從雙精確度資料類型轉換為整數資料類型總是會導致資料遺失,因為整數變數不能包含雙精確度變數的小數部分。當我們必須將一個值四捨五入到其下限值(給定小數值的最小整數值)時,這些轉換非常有用。
以上是C++程式將double類型的變數轉換為int型別的詳細內容。更多資訊請關注PHP中文網其他相關文章!