Глиф Учебники

Как вывести число с двумя знаками после запятой

Справочник · Kotlin · 1 минута чтения

Kotlin
import java.util.Locale

fun main() {
    val price = 12.3456
    println("%.2f".format(Locale.US, price))
    println("%.0f".format(Locale.US, price))
    println("%8.3f|".format(Locale.US, 3.14159))
    println("%05d".format(42))
    println("%s scored %d".format("Anna", 95))
}
Вывод
12.35
12
   3.142|
00042
Anna scored 95

"шаблон".format(значения) подставляет значения на места %…:

ЗаписьЧто значит
%.2fдробное число, 2 знака после точки, с округлением
%8.3f3 знака, вся запись шириной 8 символов — недостающее слева заполняется пробелами
%dцелое число
%05dцелое шириной 5, слева нули
%sстрока или любое значение

Запятая вместо точки

Locale — язык и страна, по правилам которых оформляются числа. Без него берутся настройки системы:

Kotlin
fun main() {
    println("%.2f".format(12.3456))
}

На компьютере с русскими региональными настройками это 12,35, с английскими — 12.35. Если формат важен — для файлов, обмена данными, проверки задач, — указывайте Locale.US явно, как в первом примере (и import java.util.Locale в начале файла). Для вывода человеку на русском запятая как раз уместна.

Округлить, а не только вывести

format меняет только вид, само число остаётся прежним. Если округлённое значение нужно для расчётов:

Kotlin
import kotlin.math.roundToInt

fun main() {
    val x = 12.3456
    println(x.roundToInt())
    val twoDigits = Math.round(x * 100) / 100.0
    println(twoDigits)
    println(Math.round(2.5 * 100) / 100.0)
}
Вывод
12
12.35
2.5

Подводные камни