删除 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 中浮点值的科学记数法格式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 应用程序中禁用科学浮点表示法

格式化字符

常用格式化输出形式

python 格式化字符串有啥用

Python数据格式:%s字符串,%d整型,%f浮点型

在 Android Studio Kotlin 中从 SQLite 数据库中删除数据