Main Content

丸めモードとオーバーフロー モードの fimath

fi オブジェクトを使用して演算前に設定した丸めモードとオーバーフロー アクションのみがその演算結果に影響します。fi オブジェクトを MATLAB® で作成すると、丸めまたはオーバーフローの設定を変更しても値には影響しません。たとえば、fi オブジェクト ab を考えてみます。

p = fipref('NumberDisplay', 'RealWorldValue',...
'NumericTypeDisplay', 'none', 'FimathDisplay', 'none');
T = numerictype('WordLength',8,'FractionLength',7);
F = fimath('RoundingMethod','Floor','OverflowAction','Wrap');
a = fi(1,T,F)
a = 

    -1
b = fi(1,T)
b = 

    0.9922

OverflowActionWrap に設定されている fimath オブジェクト F を使用して a を作成したため、a の値は -1 にラップします。一方、Saturate の既定の OverflowAction の値を使用して b を作成したため、その値は 0.9922 に飽和します。

ここで、fimath オブジェクト Fb に代入します。

b.fimath = F
b = 

    0.9922

この代入処理とそのオーバーフローと飽和は、b を作成したときに発生するため、それに新しい fimath オブジェクト F を代入したとき、その値は変わりません。

メモ

ローカル fimath をもたず、浮動小数点値から作成された fi オブジェクトは、常に NearestRoundingMethodSaturateOverflowAction を使用して構成されます。fi オブジェクトを別の RoundingMethod プロパティと OverflowAction プロパティで構成するには、使用する RoundingMethod プロパティと OverflowAction プロパティを fi コンストラクターで指定します。

fimath オブジェクトとそのプロパティについての詳細は、fimath オブジェクト プロパティを参照してください。