- ベストアンサー
小数点の切捨て
ご教授お願いいたします。 小数点の切捨てで、下記のように書いたのですが、あっていますでしょうか? double a=32.1111; long int l; double res; l = (int)(a * 10); res = l / 10; Cは、久しぶりなので忘れてしまいました。 小数点の切捨て・切り上げは、自力でやるんでしたよね? それとも、標準関数でもありましたでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
欲しいのが32ならば、 皆様のおっしゃる通り(int)だけで良いですね。 ただ、resがdoubleですし・・・ もし、欲しいのが32.1なのだとしたら、 res=l/10.0 としないと、やはり32.0になってしまいます。
その他の回答 (4)
- Tacosan
- ベストアンサー率23% (3656/15482)
実数から整数へのキャストだと「0 への丸め」になります. 一方 floor を使うと「-∞ への丸め」です. つまり (int)-1.5 は -1, floor(-1.5) は -2.0 となります. 整数に丸める関数は他にも ceil とか rint とか nearbyint なんてのがあります.
お礼
ありがとうございます。 参考になりました。
- foobar
- ベストアンサー率44% (1423/3185)
<math.h>で定義されてる floor()を使う手もあるかも知れません。
お礼
ありがとうございます。 すぐ、見てみます。
- BearCave
- ベストアンサー率20% (189/909)
doubleからintにキャストするだけで自動的に小数点以下は切り捨てされますよ。 double a = 32.1111; long int l = (int)a; // この時点で少数切捨て double res = (double)l;
お礼
ありがとうございました。 キャストをつけておくのが、無難なようですね。
- masaota56
- ベストアンサー率41% (58/139)
int型にキャストすることでいけたと思います。 double a = 3.14; int b; b = (int)a;
お礼
ありがとうございました。
お礼
>もし、欲しいのが32.1なのだとしたら、 > res=l/10.0 >としないと、やはり32.0になってしまいます。 おお、そうでしたか? 10.0 としないと駄目なのですね。 ありがとうございます。