Почему 0.06 + 0.01 = 0.07 в ColdFusion?

Почему на математические операции в ColdFusion не влияют математические задачи с плавающей точкой? Возьмем код:

result = 0.06 + 0.01;

writedump(result);
writedump(result.getClass().getName());

Который выводит

0.07

java.lang.Double

Однако эквивалентный Java код производит то, что я ожидал бы при добавлении двух дубликатов:

public static void main(String[] args) {
    double a = 0.01d;
    double b = 0.06d;

    System.out.println(a + b); //0.06999999999999999
}

Это то, что я ожидал бы увидеть от ColdFusion из-за реалий математики с плавающей точкой (http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html).

Делает ли ColdFusion какую-то "магию" за кулисами или я смотрю здесь на изолированную аномалию?

28
задан Jeromy French 8 March 2013 в 14:35
поделиться