アプリ版:「スタンプのみでお礼する」機能のリリースについて

ご教授お願いいたします。

小数点の切捨てで、下記のように書いたのですが、あっていますでしょうか?
double a=32.1111;
long int l;
double res;

l = (int)(a * 10);
res = l / 10;

Cは、久しぶりなので忘れてしまいました。
小数点の切捨て・切り上げは、自力でやるんでしたよね?
それとも、標準関数でもありましたでしょうか?

A 回答 (5件)

int型にキャストすることでいけたと思います。



double a = 3.14;
int b;
b = (int)a;
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/24 10:20

doubleからintにキャストするだけで自動的に小数点以下は切り捨てされますよ。



double a = 32.1111;
long int l = (int)a; // この時点で少数切捨て
double res = (double)l;
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/01/24 10:20

<math.h>で定義されてる


floor()を使う手もあるかも知れません。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/24 10:19

欲しいのが32ならば、


皆様のおっしゃる通り(int)だけで良いですね。

ただ、resがdoubleですし・・・
もし、欲しいのが32.1なのだとしたら、
 res=l/10.0
としないと、やはり32.0になってしまいます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/24 10:19

実数から整数へのキャストだと「0 への丸め」になります.


一方 floor を使うと「-∞ への丸め」です.
つまり (int)-1.5 は -1, floor(-1.5) は -2.0 となります.
整数に丸める関数は他にも ceil とか rint とか nearbyint なんてのがあります.
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/24 10:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!