Использование форматирования в стиле Java Double.toString () с большим количеством цифр (DecimalFormat не работает с числами с низкой точностью)

Основная проблема в том, что у меня есть серия двойников, которые мне нужно регистрировать, каждая с различным количеством значащих цифр. Числа сильно различаются по количеству значащих цифр. Некоторые имеют 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.

Есть идеи? Спасибо

5
задан user79126 29 July 2011 в 05:48
поделиться