Java NumberFormat是否应与ParsePosition一起使用,以便在国际化上下文中将字符串解析为double

Java NumberFormat是否应与ParsePosition一起使用,以便在国际化上下文中将字符串解析为double,java,parsing,internationalization,number-formatting,Java,Parsing,Internationalization,Number Formatting,我发现了两种将字符串转换为双值的策略(考虑到国际化): 1) 这将使用NumberFormat和ParsePosition来解析字符串,然后断言ParsePosition实例的索引与字符串的长度相同。这样做的缺点是,NumberFormat#parse(String,ParsePosition)的javadoc声明,如果可能,该方法将尝试返回一个Long,否则将返回一个Double。这种方法目前运行正常,但我不确定在某些情况下是否会失败 2) 这只是简单地使用NumberFormat来解析字符串

我发现了两种将字符串转换为双值的策略(考虑到国际化):

1) 这将使用
NumberFormat
ParsePosition
来解析字符串,然后
断言
ParsePosition
实例的索引与字符串的长度相同。这样做的缺点是,
NumberFormat#parse(String,ParsePosition)
的javadoc声明,如果可能,该方法将尝试返回一个
Long
,否则将返回一个
Double
。这种方法目前运行正常,但我不确定在某些情况下是否会失败

2) 这只是简单地使用
NumberFormat
来解析字符串,但问题是它在调用
NumberFormat#parse(String)
时抛出
ParseException
,因此我总是需要将代码包围在
try catch
块中

我的问题是,哪种方法更好,或者还有其他方法比这两种方法更好


我正在尝试将法语区域设置中的字符串解析为double。

一句话:验证输入的
断言
不是正确的构造。必须在JVM中显式启用断言检查才能产生任何效果。只要用一个普通的旧的
if
。@Henry谢谢你的指针