【问题标题】:Number with more than 15 digits converts to 0 while writing to CSV file写入 CSV 文件时,超过 15 位的数字转换为 0
【发布时间】:2015-04-01 06:52:31
【问题描述】:

我必须准备一个带有数据和逗号的字符串。然后使用java.util.zip.ZipEntry.将该字符串写入csv文件

现在的问题是:它适用于长度小于或等于 15 的数字。

对于长度超过 15 位的数字数据,将转换为 0。

所以我尝试使用双引号之间的数字数据将数字数据转换为字符串以避免该问题。但这行不通。

ZipEntry ze = new ZipEntry("my.csv");
ByteArrayOutputStream ba = new ByteArrayOutputStream();
ZipOutputStream zo = new ZipOutputStream(ba);
zo.putNextEntry(ze);
String csv = "123456789012345,12345678901234567890,\"hello\",";

zo.write(csv.getBytes());
zo.closeEntry();

有人可以就此提出建议吗?

【问题讨论】:

  • 将您的代码添加到您的问题中。数字从 0 到 15 这一事实可以给你一个提示。
  • 问题出在哪里?是 Java 发送了错误的数字,还是您用来打开 CSV 文件的程序解释了它们?如果是后者,请尝试使用记事本打开 CSV 并检查数字的正确性。同时发布您的代码。
  • 你用什么“数字”?最大 15 的长度不会响铃。
  • 您如何查看您的文件?
  • 号码长度怎么可能有问题?您甚至没有首先将该字符串转换为数字!也许您应该显示实际将该字符串转换为数字的代码!

标签: java string csv numeric


【解决方案1】:

只是猜测:您正在 MS Excel 中打开生成的 csv。

使用文本编辑器检查文件。

有一个错误报告说:"Last digits are changed to zeroes when you type long numbers in cells of Excel"

【讨论】:

    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2023-01-12
    • 2018-11-04
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多