小数点の処理について

【ご質問】

 下記式で、少数第3位の四捨五入を正しく行いたいのですが、

 {value {floor 2.445 * 100 + 0.5} / 100}
 2.445 * 100 = 244.49999999999997
 244.5とならず、正しく四捨五入できません。

【回答】

これは2.445を2進数で表現すると
10.011100011110101110000101000111101011 …
となり延々と続いてしまいます。
コンピュータは無限に続くものを処理することは不可能ですので
どこかでこの値を丸め近似値として扱います。
ですので2.445*100が244.5にならず244.49999999999997となります。

これを回避するには
2進表現で循環小数とならないように計算式自体を工夫する必要があります。

例えば
2進表現で循環小数とならないように全て整数で
計算して最後に元の小数になるように処理すればよいかと思います。
{floor 2445 / 10 + (1 / 2)} / 100  のようにするなどです。