如何使用特定的语言环境在Java中将字符串转换为Double?

2022-09-01 02:25:15

我想将一些我作为字符串获得的数字转换为双精度,但这些数字不在美国标准区域设置中,而是在不同的区域设置中。我该怎么做?


答案 1

尝试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()nullNullPointerExceptionparseParseException

编辑:我最初说还有另一种方法可以转换为:将结果转换为并使用取消装箱。我认为,由于正在使用 一个通用的实例(根据javadocs for getInstance),它将始终返回一个.但是DJClayworth指出,Javadocs for parse(String,ParsePosition)(由)调用,如果可能,则返回a。因此,将结果投射到Double是不安全的,不应该尝试!
谢谢 DJ克莱沃斯!doubleDoubleNumberFormatDoubleparse(String)Long


答案 2

NumberFormat是要走的路,但您应该意识到它的特殊性,当您的数据小于100%正确时,就会突然出现。

我发现了以下有用的东西:

http://www.ibm.com/developerworks/java/library/j-numberformat/index.html

如果您的输入可以信任,那么您不必担心。


推荐