小编mat*_*616的帖子

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
Run Code Online (Sandbox Code Playgroud)

所以我理解"p"1.15的十进制值不能用二进制表示.
因此,大的十进制"bdp"输出对我来说非常有意义......这就是浮点数的实际值.

问题1
当浮点数"p"转换回字符串输出(如1.15)时,舍入的方式/位置(从内部1.149..375到1.15)?

它在文档中指定了哪里?toString javadoc并没有真正的帮助(至少我).

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

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

维基百科的IEEE 754文章给出了这样的结论:

这给出了6到9个有效十进制数字精度(如果一个十进制字符串最多有6个有效小数被转换为IEEE 754单精度,然后转换回相同数量的有效小数,则最终字符串应与原始字符串匹配;

问题2
因此,似乎Java/IEEE 754浮点数应该如何工作?

我保证浮点/字符串转换/表示的准确性达到一定数量的数字(如"p"和"q"),如果超过该位数,Java将进行一些舍入显示(如"r") ")?

感谢帮助.

java floating-point

5
推荐指数
2
解决办法
876
查看次数

标签 统计

floating-point ×1

java ×1