2

除算を行うと問題が発生します。小数点付きの数値を2、4、67などの整数に切り捨てるのは誰か知りたいのですが。

4

4 に答える 4

6

「int」変数に値を割り当てると、自動的に切り捨てられます。

int c;    
c = a/b;

または、次のようにキャストできます。

c = (int) (a/b);

これにより、cがfloatまたはdoubleとして定義されている場合でも切り捨てられます。

通常、切り捨ては最善ではありません(もちろん、何を達成したいかによって異なります)。通常、結果は次のように丸められます。

c= round(a/b,0);

ラウンドが適切に行われるため、よりインテリジェントになります。Linuxを使用している場合は、正確なデータ型などについて「manround」で簡単に参照できます。

于 2012-06-25T06:24:59.500 に答える
3

trunc()で定義された関数を使用できますmath.h。小数部分を削除し、指定された数以下の最も近い整数を返します。

これはそれがどのように定義されるかです:

double trunc(double x);

以下はその使用方法です。

double a = 18.67;
double b = 3.8;
int c = trunc(a/b);

man truncLinuxでこの関数の詳細を確認できます。以前の回答で指摘したように、除算結果を整数にキャストするか、整数に割り当てると自動的に切り捨てられますが、その仕事をするC関数について知りたい場合はそれtrunc()が1つです。

于 2017-12-22T16:28:11.090 に答える
1

浮動小数点型から整数型に手動または暗黙的にキャストすると、ゼロに向かって自動的に切り捨てられます。積分型が値を格納するのに十分な大きさでない場合、オーバーフローが発生することに注意してください。小数点以下をすべて切り捨てて値を出力する必要がある場合は、次を使用しますprintf()

printf("%.0f", floor(float_val));

TõnuSamuelが指摘しているように、そのprintf()呼び出しは実際にはデフォルトで浮動小数点パラメーターを丸めます。

于 2012-06-25T06:31:43.573 に答える
1
int result = (int)ceilf(myFloat );
int result = (int)roundf(myFloat );
int result = (int)floor(myFloat);

float result = ceilf(myFloat );
float result = roundf(myFloat );
float result = floor(myFloat);

お役に立てればと思います。

于 2012-06-25T06:34:48.333 に答える