また Pokecom GO ネタ。
Pokecom GO2 で RND関数の動作がおかしいよというフィードバックをもらいました。
どうやら、RND(X, Y)とやると、結果がいつも 0 になるそうな。。
ちなみに RND というのは Round のことで、Xに対して指定した桁Yで四捨五入するという関数です。
PB-100の仕様では、
Y=0で1の位を、
-1で0.1の位を、
-2で0.01の位を四捨五入します。
ということで、ソースコードをみてみたら、なんと!何も実装されていませんでした。びっくり。
慌てて実装し、PlayStore の更新も行いました。
指摘をくれた方、どうもありがとうございました。
ちなみに Java の場合、Math クラスに round というメソッドがありますが、桁の指定はできません。
桁を指定する場合は、先に10倍(1/10倍)してから Math.round して、その後元に戻す、みたいなことをしないといけません。
というか、少数を扱うので、普通に double 型で Math.round は使えません。
なので、BigDecimal の setScale で、BigDecimal.ROUND_HALF_UP を指定するやり方で実現します。なおここでは桁の指定もできますので。
ただ、Java の場合は、
-1で1の位
0で0.1の位
1で0.01の位
の指定になるので、PB-100とは引数に違いがあります。
Pokecom GO2 で RND関数の動作がおかしいよというフィードバックをもらいました。
どうやら、RND(X, Y)とやると、結果がいつも 0 になるそうな。。
ちなみに RND というのは Round のことで、Xに対して指定した桁Yで四捨五入するという関数です。
PB-100の仕様では、
Y=0で1の位を、
-1で0.1の位を、
-2で0.01の位を四捨五入します。
ということで、ソースコードをみてみたら、なんと!何も実装されていませんでした。びっくり。
慌てて実装し、PlayStore の更新も行いました。
指摘をくれた方、どうもありがとうございました。
ちなみに Java の場合、Math クラスに round というメソッドがありますが、桁の指定はできません。
桁を指定する場合は、先に10倍(1/10倍)してから Math.round して、その後元に戻す、みたいなことをしないといけません。
というか、少数を扱うので、普通に double 型で Math.round は使えません。
なので、BigDecimal の setScale で、BigDecimal.ROUND_HALF_UP を指定するやり方で実現します。なおここでは桁の指定もできますので。
ただ、Java の場合は、
-1で1の位
0で0.1の位
1で0.01の位
の指定になるので、PB-100とは引数に違いがあります。








