java - 验证十进制数

标签 java csv decimalformat

我正在阅读一些 .csv 文件,其中包含表示十进制数的字符串。我的麻烦是,很多时候我接收使用不同区域设置的文件写入。例如:

  1. file1.csv 的价格列值为 129,13(, 为小数分隔符)
  2. file1.csv 的价格列值为 129.13(. 为小数分隔符)

现在我尝试以这种方式读取值:

 DecimalFormatSymbols dfs = new DecimalFormatSymbols(new Locale(en,US));
 DecimalFormat df= new DecimalFormat();
 df.setDecimalFormatSymbols(dfs);
 df.setParseBigDecimal(true);
 bigDecimal = (BigDecimal) df.parse(value);

使用此片段代码,第一个值变为 12913(不正确),而第二个值变为 129.13(正确)。现在我希望如果我使用 en_US local 并且文件包含使用 的值(例如小数点分隔符),我必须抛出异常。

我该怎么做?

最佳答案

虽然在使用 DecimalFormatSymbols 时无法为组分隔符设置任何内容(null)(因为它是一个char),但您可以将其设置为在有效数字中找不到的非常不寻常的内容,例如“@”。

 DecimalFormatSymbols dfs = new DecimalFormatSymbols(new Locale(en,US));
 dfs.setGroupingSeparator('@');
 DecimalFormat df= new DecimalFormat();
 df.setDecimalFormatSymbols(dfs);
 df.setParseBigDecimal(true);
 bigDecimal = (BigDecimal) df.parse(value);

关于java - 验证十进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30868047/

相关文章:

java - Java Websockets 中的来源检查以防止 CSRF

java - 使用 ant,在不知道完整路径的情况下重命名目录?

php - yii2 : Setting rules for csv file upload and retaining original filename

c# - 你能用 Google 的 Protocol Buffer 格式表示 CSV 数据吗?

java 。使用 DecimalFormat 设置小数部分的格式

java - 将 DecimalFormat 与自定义模式一起使用,但没有区域设置格式

java - 如何为 Retrofit 中的挂起功能创建调用适配器?

java - 一个类的对象可以是其他类的成员变量吗?

amazon-web-services - AWS Athena 从 S3 的 GLUE Crawler 输入 csv 创建的表中返回零记录

java - 在 Android 中使用 DecimalFormat 格式化数字