Округлите число с плавающей запятой или двойное число с двумя знаками после запятой в Котлине.
В этой статье рассматриваются различные способы округления числа с плавающей запятой или двойного числа с двумя знаками после запятой в 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 } |
Скачать код
Это решение сталкивается с той же проблемой, что и
функция, если режим округления не предусмотрен. т. е. значение 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 десятичных знаков, используя
функция с указанным 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. Если шкала нулевая или положительная, шкала представляет собой количество цифр справа от десятичной точки. Если шкала отрицательна, немасштабированное значение числа умножается на десять в степени отрицания шкалы. Таким образом, значение числа, представленного
, равно (unscaledValue × 10-scale)
.
Класс BigDecimal
предоставляет операции для арифметики, управления масштабом, округления, сравнения, хеширования и преобразования формата. Метод toString toString()
обеспечивает каноническое представление BigDecimal
.
Класс BigDecimal
дает пользователю полный контроль над поведением округления. Если режим округления не указан и точный результат не может быть представлен, выдается исключение
;в противном случае вычисления могут выполняться с выбранной точностью и режимом округления путем предоставления операции соответствующего объекта MathContext
.В любом случае для управления округлением предусмотрено восемь режимов округления . Использование целочисленных полей в этом классе (например, ROUND_HALF_UP
) для представления режима округления не рекомендуется; вместо этого следует использовать значения перечисления перечисления enum
RoundingMode
например, RoundingMode.HALF_UP
).
Когда объект MathContext
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 | Предпочтительная шкала результата |
---|---|
Add | max(addend.scale(), augend.scale()) |
Subtract | max(minuend.scale(), subtrahend.scale()) |
Multiply | multiplier.scale() + multiplicand.scale() |
Divide | dividend.scale() — divisor.scale() |
Square root | radicand. scale()/2 |
Эти шкалы используются в методах, возвращающих точные арифметические результаты; за исключением того, что для точного деления может потребоваться больший масштаб, поскольку точный результат может содержать больше цифр. Например, 1/32
— 0.03125
.
Перед округлением шкала логического точного промежуточного результата является предпочтительной шкалой для этой операции. Если точный числовой результат не может быть представлен в цифрах precision
, округление выбирает набор цифр для возврата, а масштаб результата уменьшается от масштаба промежуточного результата до наименьшего масштаба, который может представлять фактически возвращенные цифры precision
. Если точный результат может быть представлен с precision
цифр, возвращается представление результата со шкалой, наиболее близкой к предпочтительной шкале. В частности, точно представимое частное может быть представлено с precision
меньшей, чем точностьцифр, удалив конечные нули и уменьшив масштаб. Например, округление до трех цифр с использованием режима округления пола ,19/100 = 0.19 // integer=19, scale=2
but21/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
Содержание
- Comparison of Rounding Modes
- Half Even
- Half Odd
- Half Down
- Half Up
- Down
- Up
- Half Ceiling
- Half Floor
- Ceiling
- Floor
- Unnecessary
- Другие ссылки/сравнения
Следующие режимы округления используются с десятичным форматированием ICU. Обратите внимание, что использование ICU терминов «вниз» и «вверх» здесь несколько расходится с другими определениями, но эквивалентно тем же режимам, которые используются в Java JDK.
Сравнение режимов округления
На этой диаграмме показаны значения от -2,0 до 2,0 с шагом 0,1, а также показан результирующий формат ICU при форматировании без десятичных цифр.
Примечание. Некоторые из приведенных ниже параметров недоступны в ICU4J, поскольку мы используем JDK RoundingMode.
# | 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 | # |