何が起きたか
var d = 1;
obj.setPoint(1717 * Math.pow(0.1, d));
なんてコードを書いたら「171.7」ってセットされる。
と思ってしまった。
でも、実際には「171.70000000000002」がセットされた。
どうして?
理由は簡単、コンピュータは2進数の世界で動いてます。
なので2進数で表現しきれないものは誤差が出る。
当たり前。。。
小数なんか使うから(。´・ω・)
どうする?
小数を使わずに整数にしてから桁移動させればいいんじゃない?
っていうのが一般論なんだろうくらいによく言われてる。
でも、今ははなから桁移動させたいだけ。
整数にするなんてあまりにイケてない。
どうしたか
小数の掛け算するからおかしくなるんで、整数で割ることにした。
var d = 1;
obj.setPoint(1717 / Math.pow(10, d));
これできれい。