Java 为什么在使用String.format()函数时无法获得预期的输出?

Java 为什么在使用String.format()函数时无法获得预期的输出?,java,string.format,Java,String.format,为什么在使用String.format()函数时没有得到预期的输出?答案应该是123456789.123456789,对吗 main() { float a = 123456789.123456789f; System.out.println(String.format("%f", a)); // Actual Output: 123456792.000000 System.out.println(String.format("%.4

为什么在使用String.format()函数时没有得到预期的输出?答案应该是123456789.123456789,对吗

main()
{
    float a = 123456789.123456789f; 
    System.out.println(String.format("%f", a));   // Actual Output: 123456792.000000 
    System.out.println(String.format("%.4f", a)); // Actual Output: 123456792.0000 
    System.out.println(String.format("%.4f", a)); // Actual Output: 123456792.0000 
}

浮点是32位的。您刚刚溢出了它,它被添加到数字的整数部分

除非您告诉我们您的期望,否则我们无法告诉您…我已经在声明末尾对答案进行了评论,答案不应该是123456789.123456789谢谢!你能告诉我它是怎么工作的吗?我的意思是溢出部分是如何添加到整数部分的?哦,这是一件非常肮脏的事情:你应该自己在Oracle文档中找到它。很抱歉有了双倍,就更清楚了。但是float有尾数,指数,很难记住它是如何工作的。