_copysign、_copysignl

提供: RAD Studio
移動先: 案内検索

float.h:インデックス への移動



ヘッダー ファイル

float.h

カテゴリ

数値計算ルーチン

プロトタイプ

double _copysign(double da, double db);

long double _copysignl(long double lda, long double ldb);

説明

倍精度浮動小数点引数 da の符号を倍精度浮動小数点引数 db と同じものにして返します。

_copysignl はその long double 版で、long double の引数を受け取り、long double の結果を返します。

戻り値

1 番目の値の絶対値と指数は変更せず、符号を 2 番目の値と同じにしたものを返します。 エラーを示す値は返されません。 2 番目のパラメータに 0 を指定すると、戻り値は、1 番目のパラメータの絶対値はそのままで符号を + にしたものになります。

#include <float.h>
#include <stdio.h>

/* Compares a to b. But ignores b's sign and uses a's one */
int compare_no_sign(double a, double b)
{
  /* Obtain a value of b with the same sign as a */
  double b_as_a = _copysign(b, a);

  /* Do a simple double comparison */
  if (a > b_as_a)
    return 1;
  else if (a < b_as_a)
    return -1;
  else
    return 0;
}

移植性

POSIX Win32 ANSI C ANSI C++

_copysign

+

_copysignl

+