Я знаю проблему двойников из-за вычислений по основанию 2:
var total: Double = 0.1
total *= 0.1
total /= 0.1
println(total) // 0.10000000000000002
Я понимаю, что BigDecimal следует использовать для расчетов, связанных с деньгами, но в моем случае небольшая потеря точности приемлема, потому что все расчеты валюты, которые мне нужно сделать, это конвертировать валюту C1 в валюту C2 и обратно в валюту C1. Единственное, что два значения C1 после этого преобразования должны совпадать, когда я показываю результат клиенту с точностью до 5 знаков после запятой.
Теперь я пытаюсь выяснить, насколько значение может дрейфовать по этой конверсии в худшем случае? Какие числа могут привести к наихудшему сценарию?
java
- person Andrew Tobilko   schedule 04.09.2015