(int)x
を負数まで含めて使おうとすると0付近で問題が起こる。
このキャストは、「整数部分の数字を取り出す」ものだから、
1.2 -> 1
0.8 -> 0
ー0.8 -> 0
ー1.2 -> ー1
というふうに、0がかぶってしまう。
なので、ヒストグラムが0付近で盛り上がる嫌な感じとなる。
そこで、それを平らにする関数を作っておく。
int flatint(double x)
{
if(x>0)
{
return (int)x;
}
else
{
return ((int)x-1);
}
}
これを使うことにすればよい。
追記)
なんか嘘だったっぽい。分からん、ちょっと調べてみる。