web-dev-qa-db-ja.com

doubleから絶対値を取得する方法-C言語

負のdoubleの絶対値が必要です-abs-関数はJavaと同じくらい使いやすいと思いましたが、そうではありません!

値が3.8951で出力が3.000000であるため、abs-関数はintを返すようです

double d1 = abs(-3.8951);
printf("d1: ...%lf", d1);

この問題を修正するにはどうすればよいですか?つまり、doubleの絶対値が必要です。

54
user3155478

fabs() (in math.hdoubleの絶対値を取得するには:

double d1 = fabs(-3.8951);
79
herohuyongtao

fabs(またはabs)データ型の絶対値を見つけるには、doubleの代わりにfloatを使用します。 fabs関数の<math.h>ヘッダーを含めます。

double d1 = fabs(-3.8951);
16
haccks

Javaがabsなどのメソッドをオーバーロードできるため、整数または倍精度で動作することに注意してください。 Cでは、オーバーロードは存在しないため、整数と倍精度では異なる関数が必要です。

4
lurker

cabs(double)cabsf(float)cabsl(long double)__cabsf(float)__cabs(double)__cabsf(long double)を使用することが解決策であることがわかりました。

0
Firas Nomaan