Содержание

Округлите число с плавающей запятой или двойное число с двумя знаками после запятой в Котлине.

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

1. Использование

roundToInt() функция

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

1

2

3

4

5

6

7

8

9

import kotlin.math.roundToInt

 

fun main() {

    val random = 0.8458215996440445

 

    val roundoff = (random * 100.0).roundToInt() / 100.0

 

    println(roundoff)        // 0.85

}

Скачать код

 
Количество нулей указывает количество десятичных разрядов в выводе. Следовательно, чтобы округлить до 4 знаков после запятой, используйте значение 10000.0:

1

2

3

4

5

6

7

8

9

import kotlin.math.roundToInt

 

fun main() {

    val random = 0.037854093052263726

 

    val roundoff = (random * 10000.0).roundToInt() / 10000.0

 

    println(roundoff)        // 0.0379

}

Скачать код

 
Кроме того, рассмотрите эту альтернативную и эквивалентную версию приведенного выше кода:

1

2

3

4

5

6

7

8

9

import kotlin.math.roundToInt

 

fun main() {

    val random = 0.797490220519589

 

    val roundoff = (random * 10000).roundToInt().toDouble() / 10000

 

    println(roundoff)        // 0.7975

}

Скачать код

 
Стоит отметить, что арифметика с плавающей запятой очень сложна и не всегда может работать должным образом. Например, значение 295.335 округляется “в меньшую сторону” до 295.33 вместо округления “вверх” до 295.34.

1

2

3

4

5

6

7

8

import kotlin.math.roundToInt

 

fun main() {

    val random = 295.335

 

    println(random * 100.0) // 29533.499999999996

    println((random * 100.0).roundToInt() / 100.0) // 295.33

}

Скачать код

2. Использование

DecimalFormat.format() функция

В качестве альтернативы мы можем назвать DecimalFormat.format() функция для ограничения двойного числа до 2-х десятичных точек с использованием шаблона #.##. RoundingMode может быть предоставлена с помощью setRoundingMode() функция.

1

2

3

4

5

6

7

8

9

10

11

import java.math.RoundingMode

import java.text.DecimalFormat

 

fun main() {

    val random = 8435.21057752090819915

 

    val df = DecimalFormat(«#.##»)

    df.roundingMode = RoundingMode.DOWN

    val roundoff = df.format(random)

    println(roundoff)        // 8435.21

}

Скачать код

 
Обратите внимание, что количество # после точки указывается количество знаков после запятой. Поэтому для округления до 3 знаков после запятой используйте шаблон

#.###:

1

2

3

4

5

6

7

8

9

10

11

import java.math.RoundingMode

import java.text.DecimalFormat

 

fun main() {

    val random = 4732. 8326486752163523

 

    val df = DecimalFormat(«#.###»)

    df.roundingMode = RoundingMode.DOWN

    val roundoff = df.format(random)

    println(roundoff)        // 4732.832

}

Скачать код

 
Это решение сталкивается с той же проблемой, что и

roundToInt() функция, если режим округления не предусмотрен. т. е. значение 295.335 округляется “в меньшую сторону” до 295.33 вместо округления “вверх” до 295.34.

1

2

3

4

5

6

7

8

9

import java.text.DecimalFormat

 

fun main() {

    val random = 295.335

 

    val df = DecimalFormat(«#.##»)

    val roundoff = df.format(random)

    println(roundoff)        // 295.33

}

Скачать код

3.

Использование String.format() функция

Мы также можем использовать String.format() функция для округления числа с плавающей запятой или двойного числа с определенным количеством знаков после запятой. Это отлично работает для значения 295.335, как показано ниже:

fun main() {

    val random = 295.335

    val roundoff = String.format(«%.2f», random)

    println(roundoff)        // 295.34

}

Скачать код

4. Использование

BigDecimal

Наконец, мы можем преобразовать двойное значение в BigDecimal и ограничьте двойное значение до 2 десятичных знаков, используя

setScale() функция с указанным RoundingMode.

1

2

3

4

5

6

7

8

9

import java. math.BigDecimal

import java.math.RoundingMode

 

fun main() {

    val random = Math.random()

    val bd = BigDecimal(random)

    val roundoff = bd.setScale(2, RoundingMode.FLOOR)

    println(roundoff)

}

Скачать код

Это все об округлении числа с плавающей запятой или двойного числа с двумя знаками после запятой в Kotlin.

Оценить этот пост

Средний рейтинг 5/5. Подсчет голосов: 17

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Расскажите, как мы можем улучшить этот пост?


Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования

🙂


Class BigDecimal Класс BigDecimal предоставляет операции для арифметики, управления масштабом, округления, сравнения, хеширования и преобразования формата.

java.lang.Object

java.lang.Number

java.math.BigDecimal

Все реализованные интерфейсы:
Serializable, Comparable<BigDecimal>
public class BigDecimal extends Number implements Comparable<BigDecimal>

Неизменяемые десятичные числа со знаком произвольной точности. BigDecimal состоит из произвольной точности целогоunscaled valueи 32-битное целое числоscale. Если шкала нулевая или положительная, шкала представляет собой количество цифр справа от десятичной точки. Если шкала отрицательна, немасштабированное значение числа умножается на десять в степени отрицания шкалы. Таким образом, значение числа, представленного

BigDecimal , равно (unscaledValue × 10-scale) .

Класс BigDecimal предоставляет операции для арифметики, управления масштабом, округления, сравнения, хеширования и преобразования формата. Метод toString toString() обеспечивает каноническое представление BigDecimal .

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

ArithmeticException ;в противном случае вычисления могут выполняться с выбранной точностью и режимом округления путем предоставления операции соответствующего объекта MathContext .В любом случае для управления округлением предусмотрено восемь режимов округления . Использование целочисленных полей в этом классе (например, ROUND_HALF_UP ) для представления режима округления не рекомендуется; вместо этого следует использовать значения перечисления перечисления enum RoundingMode например, RoundingMode.HALF_UP ).

Когда объект MathContext

предоставляется с параметром точности 0 (например, MathContext. UNLIMITED ), арифметические операции являются точными, как и арифметические методы, которые не MathContext объект MathContext . Как следствие вычисления точного результата, параметр режима округления объекта MathContext с параметром точности 0 не используется и, следовательно, не имеет значения. В случае деления точное частное может иметь бесконечно длинное десятичное разложение; например, 1, деленная на 3. Если частное имеет неопределенное десятичное раскрытие и операция указана для возврата точного результата, генерируется ArithmeticException . В противном случае возвращается точный результат деления, как и для других операций.

Когда параметр точности не равен 0, правила арифметики BigDecimal в целом совместимы с выбранными режимами работы арифметики, определенными в ANSI X3.274-1996 и ANSI X3.274-1996 / AM 1-2000 (раздел 7.4). В отличие от этих стандартов BigDecimal включает множество режимов округления. Любые конфликты между этими стандартами ANSI и спецификацией BigDecimal разрешаются в пользу BigDecimal .

Поскольку одно и то же числовое значение может иметь различные представления (с различными масштабами),правила арифметики и округления должны определять как числовой результат,так и масштаб,используемый в представлении результата.Различные представления одного и того же числового значения называются членами одного и того же числа.cohort. Естественный порядок BigDecimal считает BigDecimal одной когорты равными друг другу. Напротив, метод equals требует, чтобы и числовое значение, и представление были одинаковыми, чтобы выполнялось равенство. Результаты таких методов, как scale и unscaledValue() , будут различаться для численно равных значений с разными представлениями.

Обычно режимы округления и настройки точности определяют, как операции возвращают результаты с ограниченным числом цифр, когда точный результат имеет больше цифр (возможно, бесконечно много в случае деления и квадратного корня), чем количество возвращаемых цифр. Во- первых, общее количество цифр возврата задается MathContext «s precision настройки; это определяет результатprecision. Подсчет цифр начинается с самой левой ненулевой цифры точного результата. Режим округления определяет, как любые отброшенные конечные цифры влияют на возвращаемый результат.

Для всех арифметических операторов операция выполняется так, как если бы сначала вычислялся точный промежуточный результат, а затем округлялся до количества цифр, заданного настройкой точности (при необходимости), с использованием выбранного режима округления. Если точный результат не возвращается, некоторые разряды точного результата отбрасываются. Когда округление увеличивает величину возвращаемого результата, новая позиция цифры может быть создана путем переноса, распространяющегося на начальную цифру «9». Например, округление значения 999,9 до трех цифр с округлением в большую сторону будет численно равно одной тысяче, представленной как 100×10 1 . В таких случаях новая «1» является первой цифрой возвращаемого результата.

Для методов и конструкторов с параметром MathContext , если результат неточный, но режим округления UNNECESSARY , будет выброшено исключение ArithmeticException .

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

Предпочтительные шкалы для результатов арифметических операций
OperationПредпочтительная шкала результата
Addmax(addend.scale(), augend.scale())
Subtractmax(minuend.scale(), subtrahend.scale())
Multiplymultiplier.scale() + multiplicand.scale()
Dividedividend.scale() — divisor.scale()
Square rootradicand. scale()/2

Эти шкалы используются в методах, возвращающих точные арифметические результаты; за исключением того, что для точного деления может потребоваться больший масштаб, поскольку точный результат может содержать больше цифр. Например, 1/320.03125 .

Перед округлением шкала логического точного промежуточного результата является предпочтительной шкалой для этой операции. Если точный числовой результат не может быть представлен в цифрах precision , округление выбирает набор цифр для возврата, а масштаб результата уменьшается от масштаба промежуточного результата до наименьшего масштаба, который может представлять фактически возвращенные цифры precision . Если точный результат может быть представлен с precision цифр, возвращается представление результата со шкалой, наиболее близкой к предпочтительной шкале. В частности, точно представимое частное может быть представлено с precision меньшей, чем точностьцифр, удалив конечные нули и уменьшив масштаб. Например, округление до трех цифр с использованием режима округления пола ,
19/100 = 0.19 // integer=19, scale=2
but
21/110 = 0.190 // integer=190, scale=3

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

Другие методы могут иметь несколько иную семантику округления. Например, результат метода pow с использованием указанного алгоритма может иногда отличаться от округленного математического результата более чем на одну единицу в последнем разряде, одинulp.

Для управления масштабом BigDecimal предусмотрено два типа операций BigDecimal операции масштабирования/округления и операции перемещения десятичной точки. Операции масштабирования/округления ( setScale и round ) возвращают BigDecimal , значение которого примерно (или точно) равно значению операнда, но масштаб или точность которого соответствуют указанному значению; то есть они увеличивают или уменьшают точность сохраненного числа с минимальным влиянием на его значение. Операции перемещения десятичной точки ( movePointLeft и movePointRight ) возвращают BigDecimal , созданный из операнда путем перемещения десятичной точки на указанное расстояние в указанном направлении.

Как 32-битное целое число, набор значений для шкалы большой, но ограниченный. Если масштаб результата превысит диапазон 32-разрядного целого числа из-за переполнения или потери значимости, операция может вызвать исключение ArithmeticException .

Для краткости и ясности во всем описании методов BigDecimal используется псевдокод . Выражение псевдокода (i + j) является сокращением для « BigDecimal , значение которого совпадает со значением BigDecimal i , добавленным к значению BigDecimal j ». Выражение псевдокода (i == j) является сокращением для « true тогда и только тогда, когда BigDecimal i представляет то же значение, что и BigDecimal j ». Аналогично интерпретируются и другие выражения псевдокода. Квадратные скобки используются для представления конкретной пары BigInteger и масштабирования, определяющей BigDecimal значение; например [19, 2] — это BigDecimal , численно равное 0,19 и имеющее масштаб 2.

Все методы и конструкторы для этого класса NullPointerException при передаче ссылки на null объект для любого входного параметра.

API Note:
Следует проявлять осторожность , если BigDecimal объекты используются в качестве ключей в SortedMap или элементов в SortedSet начиная с BigDecimal «сnatural orderingэто не согласуется с равными . См Comparable , SortedMap или SortedSet для получения дополнительной информации. Начиная с пересмотренного в 2008 годуСтандарт IEEE 754 для арифметики с плавающей точкойрассмотрел десятичные форматы и операции. Хотя в десятичной арифметике, определенной IEEE 754 и этим классом, есть большое сходство, есть и заметные различия. Фундаментальное сходство, разделяемое BigDecimal и десятичной арифметикой IEEE 754, заключается в концептуальной операции вычисления математического бесконечно точного вещественного значения операции с последующим отображением этого действительного числа в представимое десятичное значение с плавающей запятой в соответствии с политикой округления . Политика округления называется режимом округления для BigDecimal .и называется атрибутом направления округления в IEEE 754-2019. Когда точное значение невозможно представить, политика округления определяет, какое из двух представимых десятичных значений, заключенных в скобки для точного значения, будет выбрано в качестве вычисленного результата. Обе системы разделяют также понятие предпочтительной шкалы / предпочтительного показателя степени .

Для различий IEEE 754 включает несколько типов значений, не моделируемых BigDecimal , включая отрицательный нуль, знаковые бесконечности и NaN (не число). IEEE 754 определяет форматы, которые параметризуются основанием (двоичным или десятичным), числом разрядов точности и диапазоном показателей. Формат определяет набор представляемых значений. Большинство операций принимают в качестве входных данных одно или несколько значений заданного формата и выдают результат в том же формате. Масштаб BigDecimal эквивалентен отрицанию экспоненты значения IEEE 754 . BigDecimal не имеют формата в том же смысле; все значения имеют одинаковый возможный диапазон масштаба/показателя, а немасштабированное значение имеет произвольную точность. Вместо этого для BigDecimal , принимающие параметр MathContext , если MathContext имеет ненулевую точность, набор возможных представляемых значений для результата определяется точностью аргумента MathContext . Например, в BigDecimal , если ненулевое трехзначное число и ненулевое четырехзначное число умножаются вместе в контексте объекта MathContext , имеющего точность три, результат будет состоять из трех цифр (при условии отсутствия переполнения или потери значимости и т. д. ).

Политики округления, реализованные операциями BigDecimal , указанными режимами округления, являются надлежащим надмножеством атрибутов направления округления IEEE 754.

BigDecimal Арифметика BigDecimal больше всего будет напоминать десятичную арифметику IEEE 754, если для округления всех начальных значений и промежуточных операций используется MathContext , соответствующий десятичному формату IEEE 754, например decimal64 или decimal128 . Вычисленные числовые значения могут отличаться, если диапазон степени аппроксимируемого формата IEEE 754 превышен, поскольку MathContext не ограничивает масштаб результатов BigDecimal . Операции, которые генерируют NaN или точную бесконечность, такие как деление на ноль, ArithmeticException BigDecimal ArithmeticException в арифметике BigDecimal .

Since:
1.1
See Also:
  • BigInteger
  • MathContext
  • RoundingMode
  • SortedMap
  • SortedSet
  • Стандарт IEEE для арифметики с плавающей запятой
  • Serialized Form

© 1993, 2022, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian’s OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle. com/en/java/javase/19/docs/api/java.base/java/math/BigDecimal.html


OpenJDK 19
  • Class Void

  • Class WrongThreadException

  • Field Summary

  • Methods declared in class java. lang.

  • 1
  • 545
  • 546
  • 547
  • 548
  • 549
  • 6528
  • Next

Sequenced Collections для JDK 21, Vector API для JDK 20, Gen ZGC, Hilla 2.

0

Домашняя страница InfoQ Новости Обзор новостей Java: Sequenced Collections для JDK 21, Vector API для JDK 20, Gen ZGC, Hilla 2.0

QCon New York (13–15 июня): ознакомьтесь с передовым опытом от старших разработчиков в компаниях, занимающихся ранними адаптерами.

Закладки

13 марта 2023 г. 6 мин читать

по

  • Майкл Редлих

Напишите для InfoQ
Присоединяйтесь к сообществу экспертов. Увеличьте свою видимость.
Развивайте свою карьеру.Подробнее

Обзор Java на этой неделе от 6 марта 2023 г. содержит новости OpenJDK, JDK 20, JDK 21, Spring Cloud Data Flow 2.10.2, Spring Modulith 0.5, Quarkus 2.16. 14 и 3.0.0. .Alpha5, Open Liberty 23.0.0.2, Micronaut 3.8.7, Helidon 2.6.0, Apache Tomcat 11.0.0-M4, Apache Camel-4.0.0-M2, JobRunr 6.1.1, Jarviz 0.3.0 и Hilla 2.0.

OpenJDK

После завершения проверки статус JEP 438, Vector API (Пятый инкубатор), был повышен с Предлагается для цели до Целевой статус для JDK 20 на прошлой неделе. Этот JEP, осуществляемый под эгидой Project Panama, включает усовершенствования в ответ на отзывы предыдущих четырех раундов инкубации: JEP 426, Vector API (четвертый инкубатор), представленный в JDK 19; JEP 417, Vector API (третий инкубатор), поставляемый в JDK 18; JEP 414, Vector API (второй инкубатор), поставляемый в JDK 17; и JEP 338, Vector API (Incubator), поставляемый как модуль-инкубатор в JDK 16. JEP 438 предлагает улучшить Vector API для загрузки и хранения векторов в и из MemorySegment , как определено JEP 424, API внешних функций и памяти (предварительная версия).

JEP 431, Sequenced Collections, был повышен с Candidate до Proposed to Target статуса для JDK 21. Этот JEP предлагает ввести «новое семейство интерфейсов, которые представляют концепцию коллекции, элементы которой расположены в четко определенная последовательность или порядок как структурное свойство коллекции». Мотивация была связана с отсутствием четко определенного порядка и единого набора операций в рамках Collections Framework. Ожидается, что обзор завершится 16 марта 2023 г. Более подробную информацию о JEP 431 можно найти в этой новости InfoQ.

JEP 439, Generational ZGC, на прошлой неделе был повышен со своего статуса Draft 8272979 до Candidate . В этом JEP предлагается «улучшить производительность приложения за счет расширения сборщика мусора Z (ZGC) для поддержки отдельных поколений для молодых и старых объектов. Это позволит ZGC чаще собирать молодые объекты, которые имеют тенденцию умирать молодыми».

Далибор Топик, главный менеджер по продуктам в Oracle, предложил распустить и заархивировать проект JDK 6 из-за: отсутствия определенного руководителя проекта или трафика списка рассылки за последние два года; и ни одного толчка в его лес за последние четыре года. InfoQ опубликует более подробную новость.

JDK 20

JDK 20 остается в стадии кандидата на выпуск с ожидаемым общедоступным выпуском 21 марта 2023 г. Сборка 36 остается текущей сборкой в ​​сборках раннего доступа JDK 20. Более подробную информацию об этой сборке можно найти в примечаниях к выпуску.

JDK 21

На прошлой неделе также стала доступна сборка 13 сборок раннего доступа JDK 21, содержащая обновления сборки 12, которые включают исправления различных проблем. Более подробную информацию об этой сборке можно найти в примечаниях к выпуску.

Для JDK 20 и JDK 21 разработчикам рекомендуется сообщать об ошибках через базу данных ошибок Java.

Spring Framework

Выпуск Spring Cloud Data Flow 2. 10.2 поставляется с исправлениями ошибок, обновлениями библиотек до Spring Boot 2.7.9 и Spring Cloud 2021.0.6, а также обновлениями зависимостей для подпроектов, таких как: Spring Cloud Dataflow Build 2.10.2; Общий поток данных Spring Cloud 2.10.2; Интерфейс Spring Cloud Dataflow 3.3.2; и Spring Cloud Deployer K8S 2.8.2. Более подробную информацию об этом выпуске можно найти в примечаниях к выпуску.

Выпуск Spring Modulith 0.5 содержит обновления библиотек до Spring Boot 3.0.4 и jMolecules 2022.2.4, а также такие улучшения, как: переименование свойства для запуска инициализации базы данных JDBC, spring.modulith.events.schema-initialization.enabled , to spring.modulith.events.jdbc-schema-initialization.enabled . Более подробную информацию об этом выпуске можно найти в журнале изменений.

Quarkus

Пятый (и последний) альфа-выпуск Quarkus 3.0.0 включает поддержку: Hibernate ORM 6.0 и Интерфейс StatelessSession ; новый пользовательский интерфейс для разработчиков; Грейдл 8. 0; пользовательский обработчик перенаправления в REST Client Reactive с помощью аннотации @ClientRedirectHandler ; и часовые пояса для расписаний на основе cron через аннотацию @Scheduled . Более подробную информацию об этом выпуске можно найти в журнале изменений.

Quarkus 2.16.14.Final, четвертый отладочный выпуск, содержит заметные изменения, такие как: распространение отказоустойчивых свойств системы, связанных с Quarkus; вернуть ноль InputStream от клиента REST, когда сервер отвечает 204, нет содержимого; и улучшено ведение журнала в классе DevServicesKubernetesProcessor . Более подробную информацию об этом выпуске можно найти в журнале изменений.

Open Liberty

IBM выпустила Open Liberty 23.0.0.2, поставляемую с новыми функциями, такими как: тестирование соединений базы данных с Центром администрирования; новый параметр командной строки --timeout для команда остановки сервера ; и исправление для CVE-2022-45787, уязвимости, из-за которой неправильные ленивые разрешения на временные файлы, используемые классом TempFileStorageProvider в Apache James Mime4J, могут привести к раскрытию информации другим локальным пользователям.

Micronaut

Фонд Micronaut выпустил версию Micronaut 3.8.7 с исправлениями ошибок, улучшениями в документации и обновлениями модулей: Micronaut Serialization, Micronaut CRaC, Micronaut Kafka, Micronaut AOT и Micronaut GCP. Также было выпущено обновление для SnakeYAML 2.0, которое устраняет CVE-2022-1471, уязвимость, из-за которой десериализация типов с помощью SnakeYAML Constructor() позволит злоумышленнику инициировать выполнение вредоносного удаленного кода. Более подробную информацию об этом выпуске можно найти в примечаниях к выпуску.

Helidon

Oracle выпустила Helidon 2.6.0 с заметными изменениями, такими как: регистрация службы OciMetricsSupport только в том случае, если флаг enable установлен на true; обновление зависимостей до SnakeYAML 2.0; очистить спецификацию Helidon, удалив неразвернутые артефакты; и убрать из документации утверждение о том, что метрики передаются от сервера к клиенту.

Apache Software Foundation

Четвертый этапный выпуск Apache Tomcat 11.0.0, который обеспечивает: восстановление исходного системного подхода на основе свойств для загрузки пользовательских обработчиков протокола URL; предоставить реализацию подмножества поддержки JavaBeans, которая не зависит от пакета java.beans ; и восстановить встроенное состояние после асинхронной операции в NIO2 для устранения непредвиденных исключений, создаваемых реализацией. Более подробную информацию об этом выпуске можно найти в журнале изменений.

Второй важный выпуск Apache Camel 4.0.0 содержит исправления ошибок, обновления зависимостей и новые функции, такие как: предварительно подписанные URL-адреса в компоненте camel-minio для подключения к облачным службам; добавить проверки работоспособности для компонентов, у которых есть расширение для проверки подключения в компоненте camel-health ; и вывод каталога теперь в формате JSON с компонентом camel-jbang . Более подробную информацию об этом выпуске можно найти в примечаниях к выпуску.

JobRunr

Выпущена версия JobRunr 6.1.1 с двумя исправлениями ошибок: ошибка выполнения повторяющегося задания с интерфейсом JobLambda ; и NullPointerException из-за отсутствия свойства в задании JSON при использовании Yasson.

Jarviz

Версия 0.3.0 Jarviz, новой утилиты для анализа файлов JAR, была выпущена Андресом Альмираем для сообщества Java. Эта новая версия поставляется с исправлениями ошибок и новыми функциями, такими как: новая команда, extract для извлечения записей JAR по имени или шаблону; новая команда validate для проверки имен пакетов; и новый параметр командной строки --output-format для указания желаемого вывода.

Hilla

От создателей Vaadin была выпущена версия 2.0 Hilla, фреймворка с открытым исходным кодом, который интегрирует серверную часть Spring Boot Java с реактивным внешним интерфейсом TypeScript. Эта новая версия поддерживает: JDK 17; Джакарта EE 10; Весенняя загрузка 3.0; реактивные недпоинты; компиляция собственного образа с помощью GraalVM; и SSO Kit для быстрого добавления возможностей единого входа в приложения Hilla. Более подробную информацию об этом выпуске можно найти в примечаниях к выпуску и в этой новости InfoQ.

Об авторе

Michael Redlich

Показать ещеСкрыть

Оцените эту статью

Принятие

Автор связался с

Вдохновился этим контентом? Пишите для InfoQ.

Написание статьи для InfoQ открыло для меня много дверей и расширило возможности карьерного роста . Я смог глубоко пообщаться с экспертами и лидерами мнений, чтобы узнать больше о темах, которые я освещал. И я также могу распространять свои знания среди более широкого технического сообщества и понимать, как технологии используются в реальном мире.

Вивиан Ху Редактор новостей DevOps @InfoQ; Директор по продуктам @Second State

Запись для InfoQ

Вдохновился этим контентом? Пишите для InfoQ.

Я открыл для себя программу InfoQ для участников в начале этого года и с тех пор наслаждаюсь ею! Система взаимного рецензирования InfoQ не только предоставила мне платформу для обмена знаниями с мировым сообществом разработчиков программного обеспечения, но и значительно улучшила мои навыки письма.0022 . Если вы ищете место, где можно поделиться своим опытом в области программного обеспечения, начните вносить свой вклад в InfoQ.

Огеневведе Эмени Автор статей @InfoQ; Разработчик программного обеспечения, генеральный директор @Pact

Запись для InfoQ

Вдохновился этим контентом? Пишите для InfoQ.

Я начал писать новости для очереди InfoQ .NET, чтобы не отставать от технологий, но получил от этого гораздо больше. Я встретил знающих людей, получил глобальную известность и улучшил свои навыки письма .

Эдин Капич Редактор новостей .NET @InfoQ; Ведущий инженер @Vista, бывший Microsoft MVP

Запись для InfoQ

Вдохновился этим контентом? Пишите для InfoQ.

Стать редактором InfoQ было одним из лучших решений в моей карьере . Это бросило мне вызов, и помогло мне вырасти во многих отношениях . Мы бы хотели, чтобы к нашей команде присоединилось больше людей .

Томас Беттс Ведущий редактор отдела архитектуры и дизайна программного обеспечения @InfoQ; Старший главный инженер

Запись для InfoQ

Не могли бы вы стать нашим следующим главным редактором?

InfoQ ищет главного редактора на полную ставку , чтобы присоединиться к международной, всегда удаленной команде C4Media. Присоединяйтесь к нам, чтобы рассказать о самых инновационных технологиях нашего времени, сотрудничать с самыми яркими программистами в мире и помочь более чем 1,6 миллионам команд разработчиков внедрить новые технологии и методы, которые раздвигают границы возможностей программного обеспечения и команд!

Подать заявку

Информационный бюллетень InfoQ

Обзор контента прошлой недели на InfoQ, который рассылается каждый вторник. Присоединяйтесь к сообществу из более чем 250 000 старших разработчиков. Посмотреть пример

Мы защищаем вашу конфиденциальность.

режимов округления | Документация ICU

Содержание

  1. Comparison of Rounding Modes
    1. Half Even
    2. Half Odd
    3. Half Down
    4. Half Up
    5. Down
    6. Up
    7. Half Ceiling
    8. Half Floor
    9. Ceiling
    10. Floor
    11. Unnecessary
  2. Другие ссылки/сравнения

Следующие режимы округления используются с десятичным форматированием ICU. Обратите внимание, что использование ICU терминов «вниз» и «вверх» здесь несколько расходится с другими определениями, но эквивалентно тем же режимам, которые используются в Java JDK.

Сравнение режимов округления

На этой диаграмме показаны значения от -2,0 до 2,0 с шагом 0,1, а также показан результирующий формат ICU при форматировании без десятичных цифр.

Примечание. Некоторые из приведенных ниже параметров недоступны в ICU4J, поскольку мы используем JDK RoundingMode.

9110

. Значения точно на отметке 0,5 (половина) (показаны пунктиром на графике) округляются до ближайшей четной цифры. Это часто называют округлением банкира, потому что в среднем оно не содержит смещения. Это режим по умолчанию, указанный для операций с плавающей запятой IEEE 754.

Также известен как привязка к четному, округление к ближайшему, RN или RNE.

Половина нечетного

Аналогичен половинному четному, но округляется до ближайшего нечетного числа, а не до четного.

Half Down

Значения точно на отметке 0,5 (половина) округляются в меньшую сторону (следующее меньшее абсолютное значение, ближе к нулю).

Половина вверх

Значения точно на отметке 0,5 (половина) округляются в большую сторону (следующее большее абсолютное значение, отличное от нуля).

Вниз

Все значения округляются до следующего меньшего абсолютного значения (округляются до нуля или RZ).

Также известен как усечение, потому что незначащие десятичные разряды просто удаляются.

Вверх

Все значения округляются до следующего большего абсолютного значения (от нуля).

Half Ceiling

Значения точно на отметке 0,5 (половина) округляются до положительной бесконечности (+∞).

Это режим округления по умолчанию в ECMAScript. В CSS он известен как «ближайший».

Half Floor

Значения точно на отметке 0,5 (половина) округляются до отрицательной бесконечности (-∞).

Потолок

Все значения округлены до положительной бесконечности (+∞). Также известен как RI для раундов до бесконечности.

Этаж

Все значения округлены до минус бесконечности (-∞). Также известен как RMI для раундов до минус бесконечности.

Ненужный

Режим «Ненужный» не выполняет никакого округления, а вместо этого возвращает ошибку, если значение не может быть точно представлено без округления.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

# CEILING FLOOR DOWN UP HALFEVEN HALFODD HALFCEILING HALFFLOOR HALFDOWN HALFUP #
-2.0 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2.0
-1.9 -1 -2 -1 -2 -2 -2 -2 -2 -2 -2 -1.9
-1.8 -1 -2 -1 -2 -2 -2 -2 -2 -2 -2 -1. 8
-1.7 -1 -2 -1 -2 -2 -2 -2 -2 -2 -2 -1,7
-1.6 -1 -2 -1 -2 -2 -2 -2 -2 -2 -2 -1.6
-1.5 -1 -2 -1 -2 -2 -1 -1 -2 -1 -2 -1.5
-1,4 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -1.4
-1.3 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -1. 3
-1.2 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -1.2
-1.1 -1 -2 -1 -2 -1 -1 -1 -1 -1 -1 -1.1
-1.0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1.0
-0.9 -0 -1 -0 -1 -1 -1 -1 -1 -1 -1 -0.9
-0.8 -0 -1 -0 -1 -1 -1 -1 -1 -1 -1 -0,8
-0,7 -0 -1 -0 -1 -1 -1 -1 -1 -1 -1 -0. 7
-0.6 -0 -1 -0 -1 -1 -1 -1 -1 -1 -1 -0.6
-0.5 -0 -1 -0 -1 -0 -1 -0 -1 -0 -1 -0.5
-0.4 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0.4
-0.3 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0.3
-0.2 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0. 2
-0.1 -0 -1 -0 -1 -0 -0 -0 -0 -0 -0 -0,1
0.0 0 0 0 0 0 0 0 0 0 0 0.0
0.1 1 0 0 1 0 0 0 0 0 0 0.1
0.2 1 0 0 1 0 0 0 0 0 0 0.2
0.3 1 0 0 1 0 0 0 0 0 0 0.3
0. 4 1 0 0 1 0 0 0 0 0 0 0.4
0.5 1 0 0 1 0 1 1 0 0 1 0.5
0.6 1 0 0 1 1 1 1 1 1 1 0.6
0.7 1 0 0 1 1 1 1 1 1 1 0.7
0.8 1 0 0 1 1 1 1 1 1 1 0.8
0.9 1 0 0 1 1 1 1 1 1 1 0. 9
1.0 1 1 1 1 1 1 1 1 1 1 1.0
1.1 2 1 1 2 1 1 1 1 1 1 1.1
1.2 2 1 1 2 1 1 1 1 1 1 1.2
1.3 2 1 1 2 1 1 1 1 1 1 1.3
1.4 2 1 1 2 1 1 1 1 1 1 1.4
1. 5 2 1 1 2 2 1 2 1 1 2 1.5
1.6 2 1 1 2 2 2 2 2 2 2 1.6
1.7 2 1 1 2 2 2 2 2 2 2 1.7
1.8 2 1 1 2 2 2 2 2 2 2 1.8
1.9 2 1 1 2 2 2 2 2 2 2 1.9
2.0 2 2 2 2 2 2 2 2 2 2 2. 0
# CEILING FLOOR DOWN UP HALFEVEN Halfodd Halfceliling Halffloor Halfdown Halfup #