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
*/

関連情報