String.format使用逗号而不是point

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

将float转换为字符串..

来自以下文件String.format:

String.format(String format,Object ... args)

使用提供的格式和参数,使用用户的默认语言环境返回本地化格式化字符串.

上面引用的文本表示输出String.format将匹配用户使用的默认语言环境.

例如,如果是使用瑞典语语言环境的用户,则使用逗号作为小数点分隔符,如果使用美国语,则使用点.

如果您想强制使用哪个语言环境,请使用String.format接受三个参数的重载:


将字符串转换为float ..

使用默认语言环境将任意字符串解析为float非常简单,您只需要使用DecimalFormat.parse.

然后使用.parse获取Number并调用floatValue此返回的对象.


pab*_*sco 5

String.format 使用您所在的语言环境.如果您想要一个点,您应该这样做:

NumberFormat formatter = NumberFormat.getInstance(Locale.US);
myEditText.setText(formatter.format(fMyFloat);
Run Code Online (Sandbox Code Playgroud)

请查看NumberFormat更多格式选项


ina*_*ruk 5

format在Galaxy Tab上的通话使用一些默认设置Locale,而这些默认设置又,用于浮动。您可以使用String.format(Locale,String,...)具有特定语言环境的版本来使工作正常。

或者,您应该使用相同的语言环境来解析和格式化数字。因此,您可能应该去NumberFormat格式化和解析您的浮动。