format float[] to String 小数点符号变为逗号
format float[] to String decimal sign changes to comma
浮动[]到字符串
当我尝试将浮点数组值转换为字符串时,符号变为逗号?
private float[] myNum = {0.06f, 0.07f, 0.08f};
案例 1:
String myString = String.format("%.2f", myNum[0]);
在案例 1 中,myString 是“0,06”
案例二:
String myString = "" + myNum[0];
在案例 2 中,myString 是“0.06”
我不明白为什么会这样。
非常感谢所有帮助。
String.format
(案例 1)允许您传递 locale,如果未给出,将故障转移到操作系统可能提供的默认值(与调用 Locale.getDefault()
时得到的相同)。该语言环境使用 ,
作为小数点分隔符。
String.toString
(这是案例 2 在幕后使用的情况),从不这样做 - 它 总是 使用 .
作为小数点分隔符.
Java 不一致的默认行为是其弱点之一。
那是因为 String.format()
是区域设置感知的。我猜您的默认语言环境是 Locale.GERMAN
,因为 Locale.NORWEGIAN
不存在。小数点分隔符是逗号。
The locale always used is the one returned by Locale.getDefault()
.
如果你想根据特定区域设置格式,那么你应该使用
Locale myLocale = ...;
String.format(myLocale, "%.2f", myNum[0]);
Java 虚拟机根据主机环境在启动期间设置默认语言环境。如果没有明确指定语言环境,它会被许多语言环境敏感的方法使用。可以使用 setDefault
方法更改它。您可以轻松检查您的语言环境:System.out.println(Locale.getDefault())
.
因为 String.format(String, Object...)
始终应用默认区域设置,并且对于您的默认区域设置,“,”是浮点数的小数点分隔符
要不应用语言环境,请使用具有 null
语言环境的版本:
private float[] myNum = {0.06f, 0.07f, 0,08f};
...
String myString = String.format((Locale)null, "%.2f", myNum[0]);
myString 是:
0.06
format() 方法在格式化时使用您当前的语言环境。
我的猜测是,贵国在写小数时使用逗号而不是小数点?
例如,如果用户使用瑞典语言环境,则逗号将用作小数点分隔符,但如果用户使用美国语言环境,则将使用点作为小数点分隔符。
上面引用的文本意味着 String.format 的输出将匹配用户使用的默认语言环境。
如果您想强制使用哪个语言环境,请使用接受三个参数的 String.format 的重载:
String.format (Locale locale, String format, Object... args)
浮动[]到字符串
当我尝试将浮点数组值转换为字符串时,符号变为逗号?
private float[] myNum = {0.06f, 0.07f, 0.08f};
案例 1:
String myString = String.format("%.2f", myNum[0]);
在案例 1 中,myString 是“0,06”
案例二:
String myString = "" + myNum[0];
在案例 2 中,myString 是“0.06”
我不明白为什么会这样。 非常感谢所有帮助。
String.format
(案例 1)允许您传递 locale,如果未给出,将故障转移到操作系统可能提供的默认值(与调用 Locale.getDefault()
时得到的相同)。该语言环境使用 ,
作为小数点分隔符。
String.toString
(这是案例 2 在幕后使用的情况),从不这样做 - 它 总是 使用 .
作为小数点分隔符.
Java 不一致的默认行为是其弱点之一。
那是因为 String.format()
是区域设置感知的。我猜您的默认语言环境是 Locale.GERMAN
,因为 Locale.NORWEGIAN
不存在。小数点分隔符是逗号。
The locale always used is the one returned by
Locale.getDefault()
.
如果你想根据特定区域设置格式,那么你应该使用
Locale myLocale = ...;
String.format(myLocale, "%.2f", myNum[0]);
Java 虚拟机根据主机环境在启动期间设置默认语言环境。如果没有明确指定语言环境,它会被许多语言环境敏感的方法使用。可以使用 setDefault
方法更改它。您可以轻松检查您的语言环境:System.out.println(Locale.getDefault())
.
因为 String.format(String, Object...)
始终应用默认区域设置,并且对于您的默认区域设置,“,”是浮点数的小数点分隔符
要不应用语言环境,请使用具有 null
语言环境的版本:
private float[] myNum = {0.06f, 0.07f, 0,08f}; ... String myString = String.format((Locale)null, "%.2f", myNum[0]);
myString 是:
0.06
format() 方法在格式化时使用您当前的语言环境。 我的猜测是,贵国在写小数时使用逗号而不是小数点?
例如,如果用户使用瑞典语言环境,则逗号将用作小数点分隔符,但如果用户使用美国语言环境,则将使用点作为小数点分隔符。
上面引用的文本意味着 String.format 的输出将匹配用户使用的默认语言环境。
如果您想强制使用哪个语言环境,请使用接受三个参数的 String.format 的重载:
String.format (Locale locale, String format, Object... args)