Основная проблема в том, что у меня есть серия двойников, которые мне нужно регистрировать, каждая с различным количеством значащих цифр. Числа сильно различаются по количеству значащих цифр. Некоторые имеют 0 (например, 5257), некоторые - 2 (например, 1308,75), некоторые - вплоть до 7 (например, 124,1171875). В основном все, что находится между 0 и 7 значащими цифрами после десятичной дроби.
Стандартный Double.toString () отлично работает со всем, НО с 7 значащими цифрами. То есть до 6 цифр, все значащие цифры печатаются без каких-либо незначительных цифр. Но для тех, у кого 7 значащих цифр, toString () округляет последнюю цифру. То есть
5257 -> "5257"
1308.75 -> "1308.75"
124.1171875 -> "124.117188"
Конечно, я пробовал использовать DecimalFormat ("#. #######"), и это решило проблему отсутствия значащих цифр, но выводит незначительные цифры для многих удвоений с низкой точностью. Т.е.
1308.75 -> "1308.7499998"
Это также неприемлемо, поскольку 1) он тратит впустую значительный объем пространства (обычно журнал> 2 ГБ данных в день) и 2) он портит приложения, использующие журналы.
DecimalFormat кажется отстойным по сравнению с toString () когда дело доходит до определения значащих цифр, есть ли способ исправить это? Я просто хочу использовать стиль toString () для обработки значащих цифр и увеличить максимальное количество цифр с 6 до 7.
Есть идеи? Спасибо