kakakakakku blog

Weekly Tech Blog: Keep on Learning!

@Integerで誤差が出る

Notesの式言語で@Integerを使うと,結構頻繁に誤差が出て計算がおかしくなるので,できるだけ@Integerは使わないようにする方が良いと思う.Technoteにもちゃんと書かれてるので,詳しくはこっちを参照で.

IBM (参考)浮動小数点演算と丸め誤差について - Japan

例えばこんな式を仕込んで動かしてみると...

@Prompt([Ok]; "@Integer検証";
    @Text(@Integer(1.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(2.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(3.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(4.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(5.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(6.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(7.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(8.1 * 100) / 100)) + @Char(13) +
    @Text(@Integer(9.1 * 100) / 100))
);

4と5だけ,まさかの結果になる.

動作環境は Lotus Notes 8.5.2 FP3 です.

1.1
2.1
3.1
4.09
5.09
6.1
7.1
8.1
9.1