久しぶりにPokecom GO2ネタ。
ユーザーレビューでSIN 180 = 0.22e-16ってなるよというフィードバックをもらいました。
JavaのMath.sin()メソッドの引数はdouble型のラジアン値なので、180はMath.toRadians()でラジアン単位に変換して計算している。だから小数の値になってしまうので誤差が出るのは当たり前なんだけど。
COS, TANなども同じ。
このアプリを関数電卓として使う人なんていない(普通いないよね??)ので、あまり真面目にインプリしていなかったんだけど、ツッコミが入りました。。。
んーーーでも、どうやって対応しようかな。
degree値の場合は180の倍数ならば0にすればいいだけのような気がする。
radian値の場合はどうするんだろう。変数PIを検出するしかないのかな。ちょっと難しいな。
---
追記(2020/12/19)
radianの場合も普通にMath.PIで計算すればPIの倍数かどうかの計算ができた。
ということで 1.05.01で修正しました。
ユーザーレビューでSIN 180 = 0.22e-16ってなるよというフィードバックをもらいました。
JavaのMath.sin()メソッドの引数はdouble型のラジアン値なので、180はMath.toRadians()でラジアン単位に変換して計算している。だから小数の値になってしまうので誤差が出るのは当たり前なんだけど。
COS, TANなども同じ。
このアプリを関数電卓として使う人なんていない(普通いないよね??)ので、あまり真面目にインプリしていなかったんだけど、ツッコミが入りました。。。
んーーーでも、どうやって対応しようかな。
degree値の場合は180の倍数ならば0にすればいいだけのような気がする。
radian値の場合はどうするんだろう。変数PIを検出するしかないのかな。ちょっと難しいな。
---
追記(2020/12/19)
radianの場合も普通にMath.PIで計算すればPIの倍数かどうかの計算ができた。
ということで 1.05.01で修正しました。