負のdoubleの絶対値が必要です-abs
-関数はJavaと同じくらい使いやすいと思いましたが、そうではありません!
値が3.8951で出力が3.000000であるため、abs
-関数はintを返すようです
double d1 = abs(-3.8951);
printf("d1: ...%lf", d1);
この問題を修正するにはどうすればよいですか?つまり、double
の絶対値が必要です。
fabs()
(in math.h)double
の絶対値を取得するには:
double d1 = fabs(-3.8951);
fabs
(またはabs
)データ型の絶対値を見つけるには、double
の代わりにfloat
を使用します。 fabs
関数の<math.h>
ヘッダーを含めます。
double d1 = fabs(-3.8951);
Javaがabs
などのメソッドをオーバーロードできるため、整数または倍精度で動作することに注意してください。 Cでは、オーバーロードは存在しないため、整数と倍精度では異なる関数が必要です。
cabs(double)
、cabsf(float)
、cabsl(long double)
、__cabsf(float)
、__cabs(double)
、__cabsf(long double)
を使用することが解決策であることがわかりました。