Шаг 94.
Основы Kotlin.
Числа. Форматирование значений типа Double

    На этом шаге мы рассмотрим использование функции format().

    Допустим, вы не хотите работать с числом монет 4.1899999999999995 и желаете округлить его до 4.19. Функция format() поможет округлить Double с заданной точностью. Добавьте в код performPurchase() форматирование оставшейся суммы в кошельке.

.   .   .   .   .
fun performPurchase() {
    displayBalance()
    val totalPurse = playerGold + (playerSilver / 100.0)
    println("Total purse: $totalPurse")
    println("Purchasing item for $price")

    val remainingBalance = totalPurse - price
    println("Remaining balance: ${"%.2f".format(remainingBalance)}")
}
.   .   .   .   .
Файл с проектом можно взять здесь.


Рис.1. Форматирование Double (Tavern.kt)

    Оставшееся в кошельке золото интерполируется в строку с помощью $, как вы уже видели ранее. Но после $ идет не просто имя переменной, а выражение в фигурных скобках. Внутри скобок вызывается функция format() с аргументом remainingBalance.

    В вызове format() также определяется строка формата "%.2f". Строка формата с помощью специального набора символов определяет, как нужно отформатировать данные. Конкретно этот формат указывает, что число с плавающей точкой должно округляться до 2-го десятичного знака. Затем вы передаете значение или значения для форматирования в аргументах функции format().

    В Kotlin используются стандартные строки формата, как в Java, C/C++, Ruby и других языках. Для получения подробной информации посмотрите документацию Java API по ссылке https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html.

    Запустите Tavern.kt. Вы увидите, как Мадригал расплачивается за Dragon's Breath:

  Madrigal speaks with Taernyl about their order.
  Madrigal buys a Dragon's Breath (shandy) for 5.91.
  Player's purse balance: Gold: 10, Silver: 10
  Total purse: 10.1
  Purchasing item for 5.91
  Remaining balance: 4,19
  Madrigal exclaims: 4h, d3l1c10|_|s Dr4g0n's Br34th!


Рис.2. Результат работы приложения

    На следующем шаге мы рассмотрим преобразование Double в Int.




Предыдущий шаг Содержание Следующий шаг