最速怪談選手権

こんにちは。
小数点以下を切り捨てたいときにキャストするために
以下のようにしたところ、

float  i ;

for( i=-2.5f; i<3.5f; i+=1.0f )
{
  printf( "%f %d\n", i, (int)i ) ;
}

-2.500000  -2
-1.500000  -1
-0.500000  0
0.500000  0
1.500000  1
2.500000  2

上記の様な結果になりましたが、これを

-2.500000  -3
-1.500000  -2
-0.500000  -1
0.500000  0
1.500000  1
2.500000  2

のように-0.5なら-1にするようしたいのですが、
if文は使わずに計算だけで変換することは
可能でしょうか ?

A 回答 (2件)

floor って使えないかな?

    • good
    • 0
この回答へのお礼

こんにちは。floor 関数というのを初めて知りました。
別のレスのも含めて検討してみたいと思います。
ありがとうございました。

お礼日時:2009/07/17 18:41

範囲が決まってるならオーバーフローしない様に注意して、、、



((int)(i+10))-10

とか
    • good
    • 0
この回答へのお礼

ものすごく単純にできそうです。
オーバーフローはまず気にしなくてよい部分なので
floor 関数も含めて試してみます。
ありがとうございました。

お礼日時:2009/07/17 18:41

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