java.math.BigDecimal.toString()
может вернуть что-то вроде «0.888200000». Что может быть лучше всего, если я хочу «0.8882»? Я никогда не могу знать (если не рассчитать его для каждого конкретного случая) длину целочисленной части (слева до точки), значение может быть 123.8882 так же легко, как 123456.88.Как удалить несущественные нули при преобразовании BigDecimal в строку в Java?
7
A
ответ
10
Использование stripTrailingZeros()
:
Возвращает BigDecimal, которое численно равно к этому, но с какими-либо хвостовых нулей удалены из представления.
См http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html
1
Или, если вы фантазии регулярных выражений:
Pattern p = Pattern.compile("(.*?)0*$");
Matcher m = p.matcher(yourString);
String result=m.group(1);
, которые могли бы быть быстрее, чем все грязного Нафаршировать BigInteger
класс делает внутренне в stripTrailingZeroes
методе
+1
Удобный вариант. Благодарю. – Ivan
Спасибо. Я пропустил это, поскольку я на самом деле кодирую Scala, и его стандартная обложка BigDecimal, похоже, не имеет stripTrailingZeros :-( – Ivan
@Ivan: Библиотека такая же, независимо от того, какой язык вы используете, конечно? Так что, надеюсь, это будет просто Работа (tm). –
Да, это @ tj-crowder, но мы обычно избегаем использования типов Java напрямую, если это не необходимо в Scala, - мы предпочитаем использовать стандартную «оболочку» Scala по типу ('scala.math.BigDecimal'), но он действительно инкапсулирует 'java.math.BigDecimal', и мы можем получить к нему доступ, чтобы использовать способ, который не предлагает оболочка. – Ivan