gpt4 book ai didi

java - String的格式化方法

转载 作者:行者123 更新时间:2023-11-30 06:48:34 24 4
gpt4 key购买 nike

当我编写这段代码时

float f=56.7876f;
System.out.print(String.format("%32.12f",f));

输出为:56.787601470947

但是,当我编写这段代码时

System.out.print(String.format("%32.12f",56.7876));

输出为:56.787600000000

尽管两种代码的功能相同,为什么在这两种情况下都会打印不同的输出?

最佳答案

引用why f is placed after float values?现在考虑一下,

    float f = 56.7876f;
System.out.print(String.format("%32.12f", f)); // 56.787601470947
System.out.print(String.format("%32.12f", 56.7876)); // 56.787600000000
System.out.print(String.format("%32.12f", 56.7876f)); // 56.787601470947

对于浮点文字,默认类型是double。当您说f = 56.7876时,编译器将给出警告类型不匹配:无法从 double 转换为浮点。您需要显式地将其类型转换为 float (考虑到从 double 到 float 的精度损失)。
在此示例中,从56.7876打印的输出为double类型56.787600000000,而其余的为float类型。

为了给您提供更好的示例,请考虑以下场景。

    float f = 56.7874f;
System.out.print(String.format("%32.12f", f)); // 56.787399291992
System.out.print(String.format("%32.12f", 56.7874)); // 56.787400000000
System.out.print(String.format("%32.12f", 56.7874f)); // 56.787399291992

这清楚地表明从 56.787456.7873 的精度损失

关于java - String的格式化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43262393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com