Java往返String – > float – > String甚至(某些)值
参见英文答案 > how does Java convert floats to strings????????????????????????????????????3个 给出的典型示例是“0.2”.根据这个漂亮的IEEE 754 Converter,最接近0.2的浮点数约为0.20000000298023224,因此解析“0.2”作为浮点数应该产生这个结果. 但是,我注意到Java似乎能够做到这一点:
打印:
Test on IDeone.com Java如何知道我想要(舍入)输出“0.2”,而不是如上所述的精确输出“0.20000000298023224”? Javadocs of
不幸的是,这让我更加困惑.为什么“打印尽可能多的数字来唯一区分参数值”允许Java打印“0.2”? 理想情况下,答案也可以解释为什么选择此打印算法.这个例子是(一些)往返工作吗?还有其他动机吗? 最佳答案
输出的舍入不是因为某些打印算法.这是因为浮动的大小.如果你这样做:
你得到:
Test on Ideone.com 这清楚地表明字符串“0.2”被解析为0.20000000298023224,但浮点数据类型无法保持它,并将其四舍五入为0.2. double数据类型能够保存这些数据,因此,当您将其解析为float,但将其存储为double时,您将获得预期的输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |