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的量子指数,同时尝试保持该值相同。 如果正在增加量子指数,那么将根据四舍五入方式四舍五入到最近,四舍五入到偶数,对该值进行正确四舍五入。 如果结果与 x的值不同,那么将发生 "不精确" 浮点异常。 如果正在减小量子指数,并且结果的有效位数超过类型允许的位数,那么结果为 NaN ,并且会发生 "无效" 浮点异常。

如果一个或两个操作数都是NaN,,结果将是NaN,,并可能引发″无效″浮点运算异常。 否则,如果只有一个操作数是无穷大,结果将是 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
*/

相关信息