10進の正整数から上位4桁目を四捨五入して4桁目以降を0にした数を
求めます。(例えば 987654 => 988000 分かりにくい説明でスマソ)
long の場合、10億未満限定ですが。

long f(long data)
{
   long bunbo = 1;
   while(data/(1000*bunbo) > 0)
      bunbo *= 10;
   data += (bunbo >> 1);
   return bunbo*(data/bunbo);
}

もっと効率のいい方法を考えているのですが・・・。
全然トリッキーでもなんでもないですね。すみません、逝ってきます。