Легкий класс десятичного числа Java

Ваш вопрос не ясен, но я думаю, что вы хотите показать снэк-бар, если сеть недоступна? чтобы получить статус подключения, вы можете использовать это,

var connectivityResult = await (new Connectivity().checkConnectivity());
if (connectivityResult == ConnectivityResult.mobile ||
    connectivityResult == ConnectivityResult.wifi) {
} else {
  Scaffold(
    appBar: AppBar(
      title: Text('SnackBar Demo'),
    ),
    body: Center(
      child: Text('No  Internet'),
    ), // You'll fill this in below!
  );
}
12
задан Lawrence Dol 23 November 2010 в 22:45
поделиться

4 ответа

Я сильно подозреваю причину, почему это не было сделано, то, что издержки BigDecimal и BigInteger не так релевантны, как Вы думаете, и предотвращение его не стоящий усилия и риска получения его неправильно некоторым тонким путем.

Использовать Ваш пример: для любого финансового приложения сохранение нескольких дюжин байтов является надуманным вопросом и ограниченной точностью недопустимое (курсы акций, мои обычно имеют 2-4 цифры в США, но если Вы захотите иметь дело с развивающимися рынками, то Вы встретитесь с валютами с безудержной инфляцией, где 15-разрядная сумма покупает Вас половина буханки хлеба).

В основном это походит просто на другой случай преждевременной оптимизации.

13
ответ дан 2 December 2019 в 21:24
поделиться

Если Вы смотрите на фиксированное, небольшое количество десятичных разрядов для обработки денег, то это обычно делается путем содержания целого числа (долго при необходимости) числа центов или сотых частей цента.

Если Вы будете иметь дело с деньгами затем, то необходимо будет остерегаться того, как Вы обрабатываете округление. Если Ваши вычисления будут контролируемыми существуют правила для того, как такая вещь сделана. Также я предполагаю, что Вы знаете, что некоторые операции не могут быть сделаны точно (подразделение, являющееся очевидным примером).

0
ответ дан 2 December 2019 в 21:24
поделиться

Если Ваш фокус для вида портативных устройств на Реальный. Реальный позволяет для точности числа быть установленным от 0 до 16. Это разработано для сотовых телефонов MIDP.

Также интереса, посмотрите на конструктивную библиотеку реалов. Это не легко все же.

В отношении комментария ниже, разве Вы не можете использовать Apache Математическая Библиотека палаты общин для работы с частями? Есть ли некоторая причина, которая не будет работать?

0
ответ дан 2 December 2019 в 21:24
поделиться

Мне кажется, что, если Вы хотите произвольную точность затем, Вы испытываете необходимость в неопределенном числе битов для представления мантиссы. Это означает, что своего рода стратегия распределения массива будет необходимой для мантиссы. Вы могли обработать свое собственное здесь, но BigInteger делает это справедливо эффективно, и это работает

Необходимо указать, каково самое маленькое (ненулевое) значение, которое необходимо представить. Это будет 10^-(2^n), где n+1 является числом битов, Вы выделяете экспоненте. С BigDecimal это 10^-(2^31). Вы могли использовать произвольную экспоненту размера, но тот диапазон должен быть достаточно для кого-либо.

Таким образом, то, в чем Вы нуждаетесь, является неограниченной целочисленной мантиссой, чтобы дать Вам произвольную точность и экспоненту фиксированного размера, в зависимости от того, чем Вы хотите, чтобы Ваше минимальное представимое значение было. По существу это - BigDecimal; единственное изменение - Вы, будет использовать некоторый меньший объект, а не интервал использовал BigDecimal. Я сомневался бы, стоят ли сбережения пространства того. Я думал бы, что BigDecimal собирается сделать то, в чем Вы нуждаетесь с едва больше использованием памяти, чем какое-либо решение, которое Вы обрабатываете сами.

Конечно, Вы могли выбрать максимальное количество значащих цифр, в которых Вы будете нуждаться; затем Вам нужно устройство хранения данных фиксированного размера и для мантиссы и для экспоненты, и это - намного меньше устройства хранения данных. Просто используйте постоянное число longs как мантисса.

-1
ответ дан 2 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: