- MATLAB量化金融分析基礎與實戰
- 馬萌
- 676字
- 2020-05-28 17:52:04
1.2 數值
1.2.1 數值類型概述
MATLAB數值類型包括整數型與浮點型。整數型包括int8、int16、int32、int64、uint8、uint16、uint32和uint64,浮點型包括single和double。數值類型見表1-1。
表1-1 數值類型

1.2.2 如何查看數值類型范圍
表1-2給出了MATLAB中常見的數值類型范圍查看函數。
表1-2 數值類型范圍查看函數

例2:查看double類型數據的范圍。
>>str=′double的范圍精度為:從%g 到%g\n 和%g 到%g\n′;
>>fprintf(str,-realmax,-realmin,realmin,realmax)
其中fprintf函數的用法可查看2.2.12節。輸出為:double的范圍精度為:從-1.79769e+308到-2.22507e-308
和 2.22507e-308到1.79769e+308
例3:查看single類型數據的范圍。
>>str=′single的范圍精度為:從%g到%g\n和%g到%g\n′;
>>fprintf(str,-realmax(′single′),-realmin(′single′),realmin(′single′),realmax(′single′))
single的范圍精度為:從-3.40282e+38到-1.17549e-38
和 1.17549e-38到3.40282e+38
例4:查看int32類型數據的范圍。
>>str=′int32的范圍精度為:從%d 到%d\n′;
>>fprintf(str,intmin,intmax)
int32的范圍精度為:從-2147483648到2147483647
1.2.3 實例1:當心數值類型轉換中的溢出
MATLAB中的數值類型可以相互轉換,常見轉換函數見表1-3。
表1-3 數值類型轉換函數

例5:將10000轉換為int8類型。因為1000超過int8的范圍上限127,故數據會截斷為上限127,所以在實際程序中應注意避免數據溢出帶來的舍入風險。
>>int8(10000)
ans=
127
例6:將字符′1′轉換為int8類型。
錯誤轉換:
>>int8(′1′)%int8將字符′1′轉為其ASCII碼49
ans=
49
正確轉換方式為將字符′1′利用str2num函數轉換為數字1后再轉換為int8類型。
>>int8(str2num(′1′))
ans=
1
例7:將數字1轉換為字符′1′。
>>num2str(1)
ans=
1
1.2.4 實例2:判斷與查看數值類型
語法:
isa(X,type)
如果X的類型與type相同則返回1,否則返回0。
例8:判斷與查看數值類型示例。
>>isa(1,′int8′)
ans=
0
當然可以直接利用class函數查看數值類型。
>>class(int8(1))
ans=
int8
isa與class函數針對所有MATLAB數據類型均可執行,isa函數用法詳見2.2.7節。