Ret*_*eto 12 floating-point android android-edittext
到目前为止,我的应用程序正在处理许多设备而没有问 但是现在我用Android 3.2获得了新的Galaxy Tab,它一直在崩溃.我发现问题是EditText中的浮点数.我myEditText.setText(String.format("%.1f", fMyFloat));用来将浮动放在EditText中.但不知何故,我的3.2 Galaxy Tab上的浮点数是用逗号而不是点生成的.当我读回EditText时,应用程序当然崩溃了,告诉我这是因为逗号而没有有效的浮点数...
这里出了什么问题?
Fil*_*efp 18
来自以下文件String.format:
String.format(String format,Object ... args)
使用提供的格式和参数,使用用户的默认语言环境返回本地化格式化字符串.
上面引用的文本表示输出String.format将匹配用户使用的默认语言环境.
例如,如果是使用瑞典语语言环境的用户,则使用逗号作为小数点分隔符,如果使用美国语,则使用点.
如果您想强制使用哪个语言环境,请使用String.format接受三个参数的重载:
使用默认语言环境将任意字符串解析为float非常简单,您只需要使用DecimalFormat.parse.
然后使用.parse获取Number并调用floatValue此返回的对象.
String.format 使用您所在的语言环境.如果您想要一个点,您应该这样做:
NumberFormat formatter = NumberFormat.getInstance(Locale.US);
myEditText.setText(formatter.format(fMyFloat);
Run Code Online (Sandbox Code Playgroud)
请查看NumberFormat更多格式选项
您format在Galaxy Tab上的通话使用一些默认设置Locale,而这些默认设置又,用于浮动。您可以使用String.format(Locale,String,...)具有特定语言环境的版本来使工作正常。
或者,您应该使用相同的语言环境来解析和格式化数字。因此,您可能应该去NumberFormat格式化和解析您的浮动。