gpt4 book ai didi

java - 如何防止Java将条形码转为科学计数法

转载 作者:行者123 更新时间:2023-11-29 09:26:50 25 4
gpt4 key购买 nike

我正在尝试从 csv 文件中读取条形码。奇怪的是,当我在 IntelliJ 中打开文件时,它显示了完整的条形码。当我尝试读取 csv 文件时,条形码被转换为科学计数法的数字。

我在网上找到的最常见的解决方案是使用 Double.parseDouble(string) 将 String 转换为 Double。但这会引发异常:

java.lang.NumberFormatException: For input string: "5,40014E+12"

实际方法:

public String getField(String barcode) {
String field = null;
try {
String line;
br = new BufferedReader(new FileReader(csvFile));
br.readLine();
while ((line = br.readLine()) != null) {
String[] barcodeData = line.split(delimiter);
System.out.println(Double.parseDouble(barcodeData[2]));
if (barcodeData[2].equals(barcode)) {
field = barcodeData[67];
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return field;
}

此方法用于具有硬编码预期结果的测试。但是在这种情况下 field 总是返回 null,因为 if 子句在这里永远不会返回 true。实际异常在 System.out.println 中抛出,我在其中检查数字是如何从 CSV 中读取的。

条码应该是:5400141331875

实际从csv文件中读取的是:5,40014E+12

如何阻止 Java 将条形码转换为科学计数法?

编辑

我找到了一个“解决方案”。如果我不打开实际的 CSV 文件,数字不会转换为科学记数法。对我来说,这是一个实际的解决方案,我希望将来遇到与我相同问题的人能找到我的条形码无法从 String 转换为 Double/Long 的实际答案。谢谢大家的帮助。

最佳答案

您是否尝试过将其解析为 Long 而不是 Double ?请看下面,我得到了预期的值:

String s = "5400141331875";
System.out.println(Double.valueOf(s).longValue());

打印 5400141331875

关于java - 如何防止Java将条形码转为科学计数法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54419351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com