Удалите научное форматирование c для значений с плавающей точкой в ​​kotlin android - PullRequest
0 голосов
/ 17 февраля 2020

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

@BindingAdapter("android:text")
@JvmStatic
fun setAmount(editText: EditText, currency: Float?) {
    if (currency!= null && currency!=0.0f) {

       editText.setText(""+Math.round(currency))
    }else{
        editText.setText("")
    }
}

Класс модели

class OpportunityModel : BaseObservable(), Serializable {

var accountName = ""
var accountGuid: String? = null
var amount = 0.0
var potentialAmount:Float = 0.0f
get() = field
set(value) {field=value}
var contactPersonName = ""
var fieldOne = ""
var fieldTwo = ""
var fieldThree = ""
var fieldFour = ""
var fieldFive = ""
var opportunityName = ""
var opportunityGuid: String? = null
var opportunityRating = 0
var opportunityReasonGuid: String? = null
var opportunityIntStatus = 2
var opportunityDispStatus = ""
var opportunityNotAvailable = false
var genericFieldUI: GenericFieldDto? = null
@SerializedName("expDateOfClosure")
var dateForServer: String? = null
var expDate = ""
var contactPersonNameGuid: String? = null
var listOfAccountContact = ArrayList<AccountContactPersonModel>()
var listOfReasonMaster = ArrayList<ReasonMasterDto>()}

Это показывает значение правильно в тексте редактирования, но когда это значение добавляется в модель класс посредством привязки данных, он преобразуется в научную нотацию c и показывает значения, подобные 1E+07. Как я могу остановить это преобразование в научную c запись?

1 Ответ

0 голосов
/ 17 февраля 2020

Вы можете использовать String.format, например

@BindingAdapter("android:text")
@JvmStatic
fun setAmount(editText: EditText, currency: Float?) {
    if (currency!= null && currency!=0.0f) {

       editText.setText(String.format("%.8f", currency))
    }else{
        editText.setText("")
    }
}
...