Ошибки с плавающей точкой в ​​матричных библиотеках Java Colt

Как избежать ошибок с плавающей запятой в финансовых вычислениях, выполняемых с матричными библиотеками Colt?

3 ответа

Немного важного прочтения о злобности типов с плавающей запятой: что должен знать каждый компьютерщик об арифметике с плавающей запятой

И что-то более приправленное Java: как Java с плавающей точкой вредит всем и каждому

Для финансовых целей более распространено использование BigDecimal и связанных классов. float и double в любом случае очень подвержены ошибкам округления.

Возможно, вы захотите взглянуть на Apache Commons Math, если решите попробовать BigDecimal.

Один из распространенных методов - использовать целые числа и самостоятельно отслеживать десятичные дроби. Например, вы можете решить, что вся сумма вашей валюты будет представлена ​​с точностью до 3 десятичных знаков. Поэтому вместо того, чтобы писать:

double dollars = 10.05d;

ты пишешь

int dollars = 10050;

и когда вы хотите распечатать сумму:

System.out.println( dollars/100d );
Другие вопросы по тегам