• ベストアンサー

浮動小数点の切り捨てで-0.5を-1に。

こんにちは。 小数点以下を切り捨てたいときにキャストするために 以下のようにしたところ、 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文は使わずに計算だけで変換することは 可能でしょうか ?

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

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

floor って使えないかな?

shuuden
質問者

お礼

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

その他の回答 (1)

  • precog
  • ベストアンサー率22% (966/4314)
回答No.1

範囲が決まってるならオーバーフローしない様に注意して、、、 ((int)(i+10))-10 とか

shuuden
質問者

お礼

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

関連するQ&A