当前位置: 代码迷 >> 综合 >> java.lang.NumberFormatException: Invalid float: quot;1,94quot;
  详细解决方案

java.lang.NumberFormatException: Invalid float: quot;1,94quot;

热度:89   发布时间:2024-01-03 22:50:19.0

android 开发中代码是这样写的:

float width = getMeasuredWidth();
float viewHeight = getMeasuredHeight();
float height = (viewHeight*92)/8;
DecimalFormat df=new DecimalFormat("0.00");
float compare = Float.valueOf(df.format(width/height));

有的机器出现如下错误,然而还不是稳定出现:

java.lang.NumberFormatException: Invalid float: "1,94"

at java.lang.StringToReal.invalidReal(StringToReal.java:63)
at java.lang.StringToReal.initialParse(StringToReal.java:164)
at java.lang.StringToReal.parseFloat(StringToReal.java:323)
at java.lang.Float.parseFloat(Float.java:306)
at java.lang.Float.valueOf(Float.java:343)
at com.yew.cashclient.widget.MarqueeView.prepareAnimation(MarqueeView.java:149)
at com.yew.cashclient.widget.MarqueeView.access$1000(MarqueeView.java:27)
at com.yew.cashclient.widget.MarqueeView$4.afterTextChanged(MarqueeView.java:245)

at android.widget.TextView.sendAfterTextChanged(TextView.java:7695)

出现如下情况原因主要有:

1.系统语言设置的是西班牙语,法语等其他部分国家语言,然后转换时使用默认的语言时,会被转换成 1,94,出现如上错误;

2.运行的系统,如Android系统做国际化做的比较完善,默认的国际化标准可能设置的就是出错的标准,就会出现如上错误。

解决方案:在转换时,设置Locale.setDafult(Locale.US).设置成一种比较常规的默认国际化标准。。可能这也是DecimalFormat转换的弊端

  相关解决方案