_copysign、_copysignl
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 |
+ |