Как сделать умный десятичный отрезок в Java? - PullRequest
1 голос
/ 22 ноября 2010

Я хочу реализовать или использовать некоторую библиотеку для интеллектуального отсечения десятичной дроби.

Я имею в виду, что я хотел бы получить: от 3,456432 -> 3,4, от 0,0000023232432 -> 0,000002 и от 0,000000000001 -> 0,0 (или что-то подобное).Мне нужна эта функция для удобного пользовательского интерфейса.

Тем самым мне нужно уменьшить количество цифр, которые не равны нулю.Мне нужно оставить 1-3 старших значащих цифр и другие значения равными нулю.

Ответы [ 3 ]

3 голосов
/ 22 ноября 2010

Вы взглянули на DecimalFormat API?

DecimalFormat - это конкретный подкласс NumberFormat, который форматирует десятичные числа.Он имеет множество функций, предназначенных для анализа и форматирования чисел в любой локали, включая поддержку западных, арабских и индийских цифр.Он также поддерживает различные виды чисел, включая целые числа (123), числа с фиксированной запятой (123.4), научную запись (1.23E4), проценты (12%) и суммы в валюте (123 доллара).Все они могут быть локализованы.

2 голосов
/ 22 ноября 2010

Если вам нужна помощь, вы можете использовать следующий метод, чтобы округлить двойное число до указанного числа значащих цифр. Однако в стандартном API нет функциональности для вывода результата разумным способом:

private static double round(double v, int sigDigits) {
    double f = Math.pow(10, Math.ceil(Math.log10(Math.abs(v))) - sigDigits);
    return Math.round(v/f)*f;
}
1 голос
/ 22 ноября 2010

Начиная с Java 5, java.util имеет класс Formatter , который может делать то, что вам нужно.

...