• ベストアンサー

小数点の切捨て

ご教授お願いいたします。 小数点の切捨てで、下記のように書いたのですが、あっていますでしょうか? double a=32.1111; long int l; double res; l = (int)(a * 10); res = l / 10; Cは、久しぶりなので忘れてしまいました。 小数点の切捨て・切り上げは、自力でやるんでしたよね? それとも、標準関数でもありましたでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • thatsthat
  • ベストアンサー率55% (15/27)
回答No.4

欲しいのが32ならば、 皆様のおっしゃる通り(int)だけで良いですね。 ただ、resがdoubleですし・・・ もし、欲しいのが32.1なのだとしたら、  res=l/10.0 としないと、やはり32.0になってしまいます。

besei21
質問者

お礼

>もし、欲しいのが32.1なのだとしたら、 > res=l/10.0 >としないと、やはり32.0になってしまいます。 おお、そうでしたか? 10.0 としないと駄目なのですね。 ありがとうございます。

その他の回答 (4)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

実数から整数へのキャストだと「0 への丸め」になります. 一方 floor を使うと「-∞ への丸め」です. つまり (int)-1.5 は -1, floor(-1.5) は -2.0 となります. 整数に丸める関数は他にも ceil とか rint とか nearbyint なんてのがあります.

besei21
質問者

お礼

ありがとうございます。 参考になりました。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.3

<math.h>で定義されてる floor()を使う手もあるかも知れません。

besei21
質問者

お礼

ありがとうございます。 すぐ、見てみます。

  • BearCave
  • ベストアンサー率20% (189/909)
回答No.2

doubleからintにキャストするだけで自動的に小数点以下は切り捨てされますよ。 double a = 32.1111; long int l = (int)a; // この時点で少数切捨て double res = (double)l;

besei21
質問者

お礼

ありがとうございました。 キャストをつけておくのが、無難なようですね。

  • masaota56
  • ベストアンサー率41% (58/139)
回答No.1

int型にキャストすることでいけたと思います。 double a = 3.14; int b; b = (int)a;

besei21
質問者

お礼

ありがとうございました。

関連するQ&A

専門家に質問してみよう