2012年6月6日水曜日

std::floor の挙動

やっぱり、しょうもない事でもコードを書いて確認したくなるのであった。 本日は、std::floor が負の値をちゃんと負方向に切り捨ててるか?
#include <iostream>
#include <cmath>

int main() {
  std::cout << static_cast<int>(  0.5 / 10 ) << std::endl;
  std::cout << static_cast<int>( -0.5 / 10 ) << std::endl;
  std::cout << static_cast<int>( std::floor( 0.5 / 10.0 ) ) << std::endl;
  std::cout << static_cast<int>( std::floor( -0.5 / 10.0 ) ) << std::endl;
  std::cout << static_cast<int>( std::floor( 0.5 / 10 ) ) << std::endl;
  std::cout << static_cast<int>( std::floor( -0.5 / 10 ) ) << std::endl;
  return 0;
}

/*  // 実行結果は、VC8
  0
  0
  0
  -1
  0
  -1  // 微妙かも?
*/

0 件のコメント: