致命异常:输入字符串的java.lang.NumberFormatException:";4,75“;

致命异常:输入字符串的java.lang.NumberFormatException:";4,75“;,java,android,kotlin,Java,Android,Kotlin,在我的代码中,我进行了大量测试,没有崩溃。但当我将我的应用程序发布到PlayStore时,很多崩溃都出现在这条线上 adjustedPrice = "%.2f".format(price).toFloat() 我正在手动测试,试图在崩溃中添加一些值,但它似乎没有崩溃。如果我把价格定为4.75,没关系 有人能告诉我这次车祸的原因吗 Fatal Exception: java.lang.NumberFormatException: For input string: &quo

在我的代码中,我进行了大量测试,没有崩溃。但当我将我的应用程序发布到PlayStore时,很多崩溃都出现在这条线上

adjustedPrice =  "%.2f".format(price).toFloat()
我正在手动测试,试图在崩溃中添加一些值,但它似乎没有崩溃。如果我把价格定为4.75,没关系

有人能告诉我这次车祸的原因吗

Fatal Exception: java.lang.NumberFormatException: For input string: "4,75"
       at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
       at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
       at java.lang.Float.parseFloat(Float.java:451)

小数点分隔符不是逗号而是点(.)

在解析之前,可以将逗号替换为点

val newPrice = price.replace(",", ".")
更新:还可以使用自定义符号进行解析

fun parse(decimal: String): Number? {
    val symbols = DecimalFormatSymbols().apply {
        decimalSeparator = ','
        groupingSeparator = ' '
    }
    val df = DecimalFormat().apply {
        decimalFormatSymbols = symbols
    }
    
    return try {
         df.parse(decimal) ?: 0
     } catch (ex: ParseException){
         0
     }
}

您的问题与机器上的语言环境有关,请参阅查找
4.75
4,75
之间的差异。检查异常。