На этом шаге мы рассмотрим использование функции 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.