如何使用特定的语言环境在Java中将字符串转换为Double?
2022-09-01 02:25:15
我想将一些我作为字符串获得的数字转换为双精度,但这些数字不在美国标准区域设置中,而是在不同的区域设置中。我该怎么做?
我想将一些我作为字符串获得的数字转换为双精度,但这些数字不在美国标准区域设置中,而是在不同的区域设置中。我该怎么做?
尝试java.text.NumberFormat
。来自 Javadocs:
若要为不同的区域设置设置数字的格式,请在调用 getInstance 时指定该数字。
NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
您还可以使用数字格式来解析数字:
myNumber = nf.parse(myString);
parse()
返回一个数字
;所以要得到一个,你必须调用myNumber.doubleValue()
:double
double myNumber = nf.parse(myString).doubleValue();
请注意,永远不会返回 ,因此这不会导致 .相反,如果失败,则抛出一个已检查项。parse()
null
NullPointerException
parse
ParseException
编辑:我最初说还有另一种方法可以转换为:将结果转换为并使用取消装箱。我认为,由于正在使用 一个通用的实例(根据javadocs for getInstance
),它将始终返回一个.但是DJClayworth指出,Javadocs for parse(String,ParsePosition)
(由)调用,如果可能,则返回a。因此,将结果投射到Double
是不安全的,不应该尝试!
谢谢 DJ克莱沃斯!double
Double
NumberFormat
Double
parse(String)
Long
NumberFormat是要走的路,但您应该意识到它的特殊性,当您的数据小于100%正确时,就会突然出现。
我发现了以下有用的东西:
http://www.ibm.com/developerworks/java/library/j-numberformat/index.html
如果您的输入可以信任,那么您不必担心。