Closed Getaji closed 1 year ago
選曲画面におけるソートでスコアレートの差が非常に小さい場合に正しい並び順にならないことがある問題を修正しました。
この原因は、比較用の値が整数同士で計算され小数部が切り捨てられること、ならびに差を比較結果として返した時に自動的にintにキャストされ小数部が切り捨てられることで比較関数の返値が0になるという問題でした。そこで、floatで計算した上で明示的に整数で返すように変更しました。
もしかするとパフォーマンス上の理由により意図的に精度を落としていたのかもしれませんが、スキンでスコアレートを小数点以下2桁まで%表示できる場合にそのレートと並びが食い違うケースを通常のゲームプレイの中で確認したため、精度を上げた方が良いと判断しました。変更後の処理の負荷に関しては問題ない範疇だと考えています。
a. (score: 1992 1000 / notes: 1428) = 1394.9579831932774 (69.74%) b. (score: 2091 1000 / notes: 1500) = 1394 (69.70%)
選曲画面におけるソートでスコアレートの差が非常に小さい場合に正しい並び順にならないことがある問題を修正しました。
この原因は、比較用の値が整数同士で計算され小数部が切り捨てられること、ならびに差を比較結果として返した時に自動的にintにキャストされ小数部が切り捨てられることで比較関数の返値が0になるという問題でした。そこで、floatで計算した上で明示的に整数で返すように変更しました。
もしかするとパフォーマンス上の理由により意図的に精度を落としていたのかもしれませんが、スキンでスコアレートを小数点以下2桁まで%表示できる場合にそのレートと並びが食い違うケースを通常のゲームプレイの中で確認したため、精度を上げた方が良いと判断しました。変更後の処理の負荷に関しては問題ない範疇だと考えています。
問題が発生するケースの例
a. (score: 1992 1000 / notes: 1428) = 1394.9579831932774 (69.74%) b. (score: 2091 1000 / notes: 1500) = 1394 (69.70%)