2014-01-06 11 views
38

絶対値を負の倍数から欲しかった。私はabs関数がjavaと同じように使いやすいと思ったが、そうではなかった!double-c-languageから絶対値を得る方法

それは私が値3.8951を持っており、出力は私がこの問題を解決するにはどうすればよい3.000000

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

であるため、intを返し-function absようですか?つまり、 - doubleの絶対値が必要です。

+9

'fabs(-3.8951)'を試しましたか? 'man abs'は"整数の絶対値を計算する "と言い、' fabs(3) 'は"参照 "で相互参照されます。物事が異なる言語で同じように機能するとは決して考えないでください。特にJavaはクラスを持ち、メソッドをオーバーロードする可能性があるので、Cはそうではありません。 – lurker

+0

@mbratch - ありがとう!!!!!!!!!!!!!!!私はこれを将来的に考えるでしょう – user3155478

+0

absはCの整数に対してのみ実装されています。それで、答えは浮動小数点の同等物であるfabを使うことをお勧めします。 –

答えて

58

のmath.hで)使用fabs()doubleのために絶対値を取得する:

double d1 = fabs(-3.8951); 
+3

お元気ですか? – user3155478

+6

fabs()はdouble型です。 fabsf()は浮動小数点数です。 – nobism

+0

どちらも私の愛を平等に受ける価値がある。 – Sipty

11

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

double d1 = fabs(-3.8951); 
5

それは、整数またはダブルで動作するように、Javaは、このようなabsなどの方法をオーバーロードすることができていることは注目に値します。 Cでは、オーバーロードは存在しないので、整数と倍の間に異なる関数が必要です。

関連する問題