Неправильный десятичный разделитель, возвращенный DecimalFormatSymbols.getInstance (). DecimalSeparator - PullRequest
1 голос
/ 05 августа 2020

На основании этого вопроса: Десятичная точка или десятичная запятая в Android Я пытаюсь использовать десятичный разделитель в устройстве. Я использую Kotlin, поэтому мой код выглядит так:

import android.icu.text.DecimalFormatSymbols

DecimalFormatSymbols.getInstance().decimalSeparator  // function used in onCreate()

Этот код возвращает ,, но на устройстве разделитель, используемый, например, в EditText, равен .. Почему это происходит?


Пример, в котором, как мне кажется, возвращается неправильный результат:

import android.icu.text.DecimalFormatSymbols

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        txtSeparator.text = DecimalFormatSymbols.getInstance().decimalSeparator.toString()
        txtTest.text = (1234.5678).toString()
    }
}

введите описание изображения здесь

Почему разделитель в первом TextView отличается от разделителя во втором TextView или EditText? Это случается на некоторых языках. В Engli sh это работает, но, например, в Poli sh нет.

1 Ответ

1 голос
/ 05 августа 2020

Строка txtTest.text = (1234.5678).toString() просто сообщает виртуальной машине, что она должна использовать стандартный процесс преобразования числа в строку, поэтому она будет ставить точку в качестве десятичного разделителя, а если вы используете двойное число с большим количеством десятичных знаков, оно будет даже использовать научную нотацию c. Вместо этого вам следует взглянуть на эту страницу от Android разработчиков, где есть определенные c методы для работы с форматированием чисел: https://developer.android.com/reference/java/text/DecimalFormat

...