浮点数 字符串 java_Java如何将浮点数转换为字符串

这是我正在查看的内容:

float p=1.15f;

BigDecimal bdp=new BigDecimal(p);

float q=1.1499999f;

float r=1.14999999f;

System.out.println(p); //1.15

System.out.println(bdp); //1.14999997615814208984375

System.out.println(q); //1.1499999

System.out.println(r); //1.15

因此,我知道不能完全用二进制表示“ p” 1.15的十进制值。

因此,大的十进制大“ bdp”输出对我来说非常有意义……这是浮点数的实际值。

问题1

当浮点数“ p”转换回字符串以进行输出(如1.15)时,如何四舍五入(从内部1.149..375到1.15)?

在文档中的什么地方指定?toString javadoc并没有真正帮助(至少对我来说)。

我在语言规范中确实看到了这一点:

float和double类型的元素分别是可以使用IEEE 754 32位单精度和64位双精度二进制浮点格式表示的值。

这给出了6到9个有效十进制数字的精度(如果将具有最多6个有效十进制的十进制字符串转换为IEEE

754单精度,然后再转换回相同数量的有效十进制数字,则最终字符串应与原始字符串匹配;

问题2

看来,这应该就是Java / IEEE 754浮点数应该起作用的方式吗?

我可以保证浮点数/字符串转换/表示的精确度达到一定位数(例如“ p”和“ q”),并且如果超出该位数,Java将对显示进行四舍五入(例如“ r” ”)?

感谢帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值