>>240 >>241
よかった、0.5 でいきましょ。

>>210 >>237
で、感覚ばっかじゃ悪いので、今、256*256*256 回のループで
全通りチェックしてみました。(最近のPCって速いなぁ)
Y,U,V が double なら

Y = 0.29891 * R + 0.58661 * G + 0.11448 * B
U = -0.16874 * R - 0.33126 * G + 0.5 * B
V = 0.5 * R - 0.41869 * G - 0.08131 * B
//
Ro = (int)(Y - 0.0009919263 * U + 1.4018452447 * V + 0.5)
Go = (int)(Y - 0.3451179032 * U - 0.71429039 * V + 0.5)
Bo = (int)(Y + 1.7710177315 * U - 0.000136936 * V +0.5)

で完璧に戻ってます。

Ro = (int)(Y + 1.402 * V + 0.5)
Go = (int)(Y - 0.34414 * U - 0.7141 * V +0.5)
Bo = (int)(Y + 1.772 * U +0.5)

でも完璧に戻ります。

// のとこに
Y=(double)( (int)(Y + 0.5) )
を入れると 戻りません。

怪しいのは、getNewMeido( ) だと思います。
内部で整数処理してない?