Apache commons CSVPrinter 正在编码 Double 值
Apache commons CSVPrinter is encoding Double values
我正在尝试从列表中读取一些数据并将其写入 csv 文件,而不进行任何格式化或编码。仅逗号分隔值
但问题是,当我写入任何值(例如 0.0000666)时,它编码为 6.66E-5。
我不想格式化。我想要的输出是 0.0000666 应该只写成 0.0000666。
// getting a list in input
try (BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get(fileName));
CSVPrinter csvPrinter = CSVFormat.DEFAULT
.withEscape(Character.MIN_VALUE)
.withQuoteMode(QuoteMode.NONE)
.withHeader(HEADERS)
.withIgnoreHeaderCase()
.withTrim()
.print(bufferedWriter);) {
csvPrinter.printRecords(list);
bufferedWriter.flush();
bufferedWriter.close();
csvPrinter.close();
}
将值定义为字符串将在此处起作用。
例如:
printer.printRecord(1, "john73", "John", "Doe", "0.0000666");
对
printer.printRecord(1, "john73", "John", "Doe", 0.0000666);
所以我弄清楚了真正的问题所在。
如果值 < 1,Double 将自己编码为科学捐赠。
因此,每当我在 csv 中打印一些较小的值(如 0.0000666)时,CSVPrinter 都会将其写为 6.66E-5。
我在将值写入 csv 之前对其进行了格式化,并写入了格式化后的值。
像这样。
String.format("%.4f", 6.66E-5)
我正在尝试从列表中读取一些数据并将其写入 csv 文件,而不进行任何格式化或编码。仅逗号分隔值
但问题是,当我写入任何值(例如 0.0000666)时,它编码为 6.66E-5。 我不想格式化。我想要的输出是 0.0000666 应该只写成 0.0000666。
// getting a list in input
try (BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get(fileName));
CSVPrinter csvPrinter = CSVFormat.DEFAULT
.withEscape(Character.MIN_VALUE)
.withQuoteMode(QuoteMode.NONE)
.withHeader(HEADERS)
.withIgnoreHeaderCase()
.withTrim()
.print(bufferedWriter);) {
csvPrinter.printRecords(list);
bufferedWriter.flush();
bufferedWriter.close();
csvPrinter.close();
}
将值定义为字符串将在此处起作用。 例如:
printer.printRecord(1, "john73", "John", "Doe", "0.0000666");
对
printer.printRecord(1, "john73", "John", "Doe", 0.0000666);
所以我弄清楚了真正的问题所在。
如果值 < 1,Double 将自己编码为科学捐赠。 因此,每当我在 csv 中打印一些较小的值(如 0.0000666)时,CSVPrinter 都会将其写为 6.66E-5。
我在将值写入 csv 之前对其进行了格式化,并写入了格式化后的值。 像这样。
String.format("%.4f", 6.66E-5)