Java序列化双精度数
我想将双精度数序列化/反序列化为可读字符串。我很高兴失去超过 6 个 dp 的任何准确性。
这样做的正确方法是什么?
我担心 System.out.println(1.03 - .42) 打印 0.6100000000000001 而不是 0.61。
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您想要该值用于测试目的,Double.toString(double) 可能会很好。
如果您想要一个更具可读性的数字(例如 1.01 而不是 1.01000000000587732),您可以使用 DecimalFormat (http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html) 或 BigDecimal :
编辑:用户编辑后,我认为正确的方法是:
If you want the value for testing purposes, Double.toString(double) could be good.
If you want a more readable number (1.01 instead of 1.01000000000587732, for example), you can use DecimalFormat (http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html) or BigDecimal:
Edit: after the user edit, I think a correct approach would be:
看一下 java.lang .Double.toString() 和 java.lang.Double.valueOf(String s)。
Take a look at java.lang.Double.toString() and java.lang.Double.valueOf(String s).
最简单的方法是使用 PrintWriter 和 BufferedReader。
印刷
The simplest approach is to use PrintWriter and BufferedReader.
prints