私はコードをもっている:
if (Ly0 > 32767) {
buffer[index] = 32767;
} else if (Ly0 < -32768) {
buffer[index] = -32768;
} else {
buffer[index] = (short) Ly0;
}
buffer
ショートタイプです。Ly0
フロートタイプです。
float の整数部分が short の最大値 short よりも short が short の最大値に等しい場合、および float の整数部分が short の min 値よりも小さい short が short の min 値に等しい場合は、float を short にキャストする必要があります。 float を short に変換し、float の整数値のみを取得します。
つまり、フロートからショートにキャストし、ショートの範囲外の場合はフロートを切り捨てる必要があります。
問題は、このアプローチが十分に速くなく、堅苦しいことです。
float を short に変換する最も高速でクリーンな方法です。