quantized32() - quantized64() - quantized128() — X の量子指数を Y の量子指数に設定
形式
#define __STDC_WANT_DEC_FP__
#include <math.h>
_Decimal32 quantized32(_Decimal32 x, _Decimal32 y);
_Decimal64 quantized64(_Decimal64 x, _Decimal64 y);
_Decimal128 quantized128(_Decimal128 x, _Decimal128 y); 言語レベル
ANSI
スレッド・セーフ
はい
説明
quantized32()、 quantized64()、および quantized128() 関数は、引数 x の量子指数を引数 yの量子指数に設定しますが、値は同じままにします。 量子指数が増加する場合、丸めモード Round
to Nearest、Ties to Even を使用して値は正しく丸められます。 その結果、値が x と同一でない場合、「不正確」の浮動小数点例外が発生します。 量子指数が減少する場合で、結果の仮数部の桁数が型で許容されている桁数より多い場合、結果は NaN で、「無効」の浮動小数点例外が発生します。
1 つまたは両方のオペランドが NaN である場合、結果は NaN で、「無効」の浮動小数点例外が発生する可能性があります。 もしくは、1 つのオペランドのみが無限大である場合、結果は NaN で、「無効」の浮動小数点例外が発生します。 両方のオペランド が無限大の場合、結果は無限大で、符号は x と同じです。
quantized32()、 quantized64()、および quantized128() 関数は、アンダーフローまたはオーバーフローをシグナル通知しません。
戻り値
quantized32()、 quantized64()、および quantized128() 関数は、値 (丸めを除く) と符号が xに等しく、かつ、 yの量子指数と等しい量子指数を持つ数値を戻します。
例
この例は quantized128() 関数の使用法を例示しています。
#define __STDC_WANT_DEC_FP__
#include <stdio.h>
#include <math.h>
int main(void)
{
_Decimal128 price = 64999.99DL;
_Decimal128 rate = 0.09875DL;
_Decimal128 tax = quantized128(price * rate, 0.01DL);
_Decimal128 total = price + tax;
printf( "price = %DDa\n"
" tax = %DDa (price * rate = %DDa)\n"
"total = %DDa\n",
price, tax, price * rate, total );
return 0;
}
/***************** Output should be similar to: *****************
price = 64999.99
tax = 6418.75 (price * rate = 6418.7490125)
total = 71418.74
*/