删除 kotlin android 中浮点值的科学记数法格式
Posted
技术标签:
【中文标题】删除 kotlin android 中浮点值的科学记数法格式【英文标题】:Remove scientific notation formatting for Float values in kotlin android 【发布时间】:2020-02-17 10:58:11 【问题描述】:我正在尝试将浮点值设置为编辑文本。为此,我正在使用如下所示的绑定适配器。
@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>()
这会在编辑文本中正确显示该值,但是当通过数据绑定将此值添加到模型类时,它会转换为科学计数法并显示类似1E+07
的值。我怎样才能停止这种向科学计数法的转换?
【问题讨论】:
你能把你的模型类或模型类的特定部分放在一起吗? @SomeshKumar 添加了 尝试在模型和绑定适配器上使用双精度而不是浮点数,看看问题是否解决 @SomeshKumar 我以前使用过 double 。那也有同样的问题 然后尝试使用 BigDecimal 并将浮点数转换为 String 并使用 BigDecimal 的 toPlainString 方法。 【参考方案1】:你可以使用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("")
【讨论】:
%.2f
可能更适合法定货币。以上是关于删除 kotlin android 中浮点值的科学记数法格式的主要内容,如果未能解决你的问题,请参考以下文章