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