将包含逗号的字符串值从文件解析为浮点数

4

我的应用程序会接收到一个输入文件,每行中都有一些产品价格值。

然而,当价格高于999.99时,这些值会在适当的位置包含“,”。

1,000.00
5,432.89

1)在货币数值中放置逗号的规则有吗?逗号的位置是根据什么确定的?

2)是否有库方法可以将这样的字符串值解析为float/double?

谢谢阅读!


这个怎么样?http://docs.oracle.com/javase/tutorial/essential/io/formatting.html - nidhin
为什么要使用float/double而不是更适合价格的BigDecimal呢? - Jon Skeet
@Jon Skeet:是的...在应用程序中使用BigDecimal!但是为了堆栈溢出遵循KISS原则!! - Vicky
@nidhin:那有什么帮助吗? - Vicky
1个回答

5
您可以使用DecimalFormat来解析和格式化十进制数。
逗号用于千位分隔符。以下是一个简单的示例,它有意将解析为BigDecimal而不是floatdouble——二进制浮点数对货币值不合适。
import java.math.*;
import java.text.*;

public class Test {
    public static void main(String[] args) throws Exception {
        DecimalFormat format = new DecimalFormat();
        format.setParseBigDecimal(true);
        BigDecimal value = (BigDecimal) format.parse("1,234.56");
        System.out.println(value);
    }
}

现在只使用默认语言环境来处理千位分隔符和小数点分隔符等内容,如果您知道要解析的文件将使用哪种语言环境,您可能需要指定特定的语言环境。


请问您能否详细说明一下“locale”是什么?它如何影响格式化? - Vicky
@NikunjChauhan:不同的文化使用不同的数字显示方式。例如,在英语中,“one and a half”可能被写成1.5,但在法语中可能会写成1,5。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接