менеджер по Обновлению, заканчивающийся пространство
, Как упомянуто в комментарии, это - ошибка. Этого, как предполагается, не происходит. Удостоверьтесь, что у Вас есть 3 ГБ или больше прежде, чем выполнить обновление.
Освобождение располагает с интервалами, в то время как обновление работает
, Вы не можете использовать apt-get
, так как эти update-manager
уже содержит блокировки пакета. Вы также не можете вручную удалить кэш пакета, так как это, вероятно, получило все пакеты в нем, Вы только что загрузили.
Все, что можно сделать, переместить персональные данные и вручную удалить несущественные файлы:
Documents
, Pictures
и т.д. к хосту / Downloads
, например, ISOs~/.mozilla/firefox/Cache
или ~/cache/google-chrome/Default/Cache
. Это может иногда освобождать выше на 1 ГБ. /boot
и удаления всех кроме последнего vmlinuz-...
, initrd.img-...
, System.map-...
, abi-...
и config-...
(это может освободить выше на несколько сотен МБ, если у Вас есть много старых ядер). я все еще думаю, что это - просто ошибка, которая должна быть исправлена, вместо того, чтобы пытаться найти решение. Обтекание удаляющих или движущихся данных не является действительно отличным решением (и очевидно несет некоторый риск, если Вы случайно удаляете что-то существенное или личностной ценности.
Вот несколько советов:
BigDecimal
для вычислений, если вам нужна точность, которую он предлагает (денежные значения часто нуждаются в этом). NumberFormat
класс для отображения. Этот класс позаботится о локализации сумм в разных валютах. Однако он будет принимать только примитивы; поэтому, если вы можете принять небольшое изменение точности из-за преобразования в double
, вы можете использовать этот класс. NumberFormat
используйте scale ()
в экземпляре BigDecimal
, чтобы установить точность и метод округления. PS: Если вам интересно, BigDecimal
всегда лучше, чем ] double
, когда вам нужно представить денежные значения в Java .
PPS:
Создание экземпляров BigDecimal
Это довольно просто, поскольку BigDecimal
предоставляет конструкторы для получения примитивных значений и String
] объекты. Вы можете использовать их, предпочтительно тот, который принимает объект String
. Например,
BigDecimal modelVal = new BigDecimal("24.455");
BigDecimal displayVal = modelVal.setScale(2, RoundingMode.HALF_EVEN);
Отображение экземпляров BigDecimal
Вы можете использовать вызовы методов setMinimumFractionDigits
и setMaximumFractionDigits
, чтобы ограничить количество отображаемых данных.
NumberFormat usdCostFormat = NumberFormat.getCurrencyInstance(Locale.US);
usdCostFormat.setMinimumFractionDigits( 1 );
usdCostFormat.setMaximumFractionDigits( 2 );
System.out.println( usdCostFormat.format(displayVal.doubleValue()) );
] Используйте BigDecimal.setScale (2, BigDecimal.ROUND_HALF_UP)
, если вы хотите округлить центы до 2 десятичных знаков. Однако помните об ошибке округления при выполнении расчетов. Вы должны быть последовательны, когда будете округлять денежную ценность. Либо сделайте округление в самом конце только один раз после того, как все вычисления будут выполнены, либо примените округление к каждому значению перед выполнением любых вычислений. Какой из них использовать, будет зависеть от требований вашего бизнеса, но в целом я думаю, что округление в самом конце кажется мне более разумным.
Используйте String
при построении BigDecimal
по денежной оценке. Если вы используете double
, в конце будут значения с плавающей запятой.
1) Если вы ограничены точностью double
, одной из причин использования BigDecimal
является реализация операций с BigDecimal
, созданными из double
s.
2) BigDecimal
состоит из немасштабированного целого числа произвольной точности и неотрицательной 32-битной целочисленной шкалы, в то время как double является оболочкой для значения примитивного типа. двойной
в объекте. Объект типа Double
содержит одно поле типа double
3) Это не должно иметь значения
У вас не должно возникнуть проблем с $ и точностью. Один из способов сделать это - использовать System.out.printf
На javapractices.com есть обширный пример того, как это сделать. См., В частности, класс Money
, который предназначен для упрощения денежных вычислений, чем использование BigDecimal
напрямую.
Дизайн этого класса Money
призван сделать выражения более естественными. Например:
if ( amount.lt(hundred) ) {
cost = amount.times(price);
}
Инструмент WEB4J имеет аналогичный класс,
Я бы порекомендовал провести небольшое исследование денежного паттерна. Мартин Фаулер в своей книге «Паттерны анализа» осветил это более подробно.
public class Money {
private static final Currency USD = Currency.getInstance("USD");
private static final RoundingMode DEFAULT_ROUNDING = RoundingMode.HALF_EVEN;
private final BigDecimal amount;
private final Currency currency;
public static Money dollars(BigDecimal amount) {
return new Money(amount, USD);
}
Money(BigDecimal amount, Currency currency) {
this(amount, currency, DEFAULT_ROUNDING);
}
Money(BigDecimal amount, Currency currency, RoundingMode rounding) {
this.currency = currency;
this.amount = amount.setScale(currency.getDefaultFractionDigits(), rounding);
}
public BigDecimal getAmount() {
return amount;
}
public Currency getCurrency() {
return currency;
}
@Override
public String toString() {
return getCurrency().getSymbol() + " " + getAmount();
}
public String toString(Locale locale) {
return getCurrency().getSymbol(locale) + " " + getAmount();
}
}
Переходя к использованию:
Вы должны представить все деньги, используя объект Money
, а не BigDecimal
. Представление денег в виде большого десятичного числа будет означать, что у вас будет возможность форматировать деньги везде, где вы их отображаете. Только представьте, изменится ли стандарт отображения. Вам придется вносить правки повсюду. Вместо использования шаблона Деньги
вы централизуете форматирование денег в одном месте.
Money price = Money.dollars(38.28);
System.out.println(price);