Я боролся с кошмаром точности в Java и SQL Server до того момента, когда я больше не знаю. Лично я понимаю проблему и основную причину ее возникновения, но объясняю, что для клиента на полпути по всему земному шару что-то неосуществимо (по крайней мере, для меня).
Ситуация такая. У меня есть два столбца в SQL Server - Qty INT и Price FLOAT. Значения для них - 1250 и 10,8601 - поэтому, чтобы получить общее значение, его Qty * Price и результат 13575.124999999998 (как на Java, так и на SQL Server). Правильно. Проблема в том, что клиент не хочет видеть это, он видит это число только как 13575.125 и все. В одном месте они видят его с точностью до 2 десятичных знаков, а в другом - с 4 десятичными. При отображении в 4 десятичных разрядах правильное число - 13575.125, но при отображении в 2 десятичных разрядах они считают, что это неправильно - 13575.12 - вместо этого должно быть 13575.13!
Помощь.