Java getBytes()方法正在从字符串中的数字中剥离.00
我正在生成一个csv文件,我有一堆没有小数点的数字,我被要求在这些情况下输入.00,我使用:Java getBytes()方法正在从字符串中的数字中剥离.00,java,csv,Java,Csv,我正在生成一个csv文件,我有一堆没有小数点的数字,我被要求在这些情况下输入.00,我使用: DecimalFormat f = new DecimalFormat("#.00"); 所以fa很好,我可以看到一条线是这样的: String myStringWithDecimalPoints = "124.00, 24567868.00, 5.00" 但当我这样做的时候: out.write(myStringWithDecimalPoints.getBytes()); 我进入我的csv:
DecimalFormat f = new DecimalFormat("#.00");
所以fa很好,我可以看到一条线是这样的:
String myStringWithDecimalPoints = "124.00, 24567868.00, 5.00"
但当我这样做的时候:
out.write(myStringWithDecimalPoints.getBytes());
我进入我的csv:
124, 24567868, 5
为什么会这样
有解决办法吗?(它必须是CSV,并且必须显示.00)很可能在原始字符串的值与使用格式化程序以特定方式输出字符串时字符串的显示方式之间存在一些混淆。这并不一定意味着您的“原始”字符串已被更改
如果您提供了更完整的代码示例,我们可以更确定地说。您必须小心查看数据的方式,尤其是在Excel等电子表格中,其中输出的格式取决于单元格的类型。它可能显示也可能不显示十进制值 一张未来的便条,上面写着
out.write(myStringWithDecimalPoints.getBytes());
您可以放心地假设Java正在将所有字节写入
OutputStream
。如果你在接收端看不到同样的东西,那么接收就没有像你预期的那样进行。你是在看纯文本还是电子表格中的CSV?你能构建一个?(因为我不能:)你能展示一下你的OutputStream(我假设这就是out
是如何创建的)吗?通常最好使用PrintWriter来处理字符串,这样字符编码就不会被破坏。是否确实要更改原始字符串?当您使用System.out.println()时会发生什么;你的绳子?在某些情况下,听起来像是在使用格式化程序来影响字符串的输出方式。但这并不一定意味着您的原始字符串正在更改,而没有看到更多的代码。听起来像是字符编码的问题。最好显示更详细的代码。