gpt4 book ai didi

java - 连接字符串时从 Double 转换为 Float 时的精度?

转载 作者:行者123 更新时间:2023-12-01 20:21:03 26 4
gpt4 key购买 nike

我最近出于以下好奇:

    double d=0.8608278036117554;
String precision="float";

float f=(float)d;
String s="a " + (precision.equals("float") ? (float)d: d) + " Bonjour";
String s2="a " + String.valueOf(precision.equals("float") ? (float)d: d) + " Bonjour";
String s3="a " + (precision.equals("float") ? String.valueOf((float)d): String.valueOf(d)) + " Bonjour";


println(d);
println(f);
println(s);
println(s2);
println(s3);


//0.8608278036117554
//0.8608278
//a 0.8608278036117554 Bonjour
//a 0.8608278036117554 Bonjour
//a 0.8608278 Bonjour

为什么在计算 ss2 时不可能获得良好的 float ?为什么在 ss2 情况下它仍然是 double ?

PS:在我看来,这个问题与数字格式无关。我真的很想了解为什么 (float)d 转换不起作用!!

最佳答案

你的表达式 precision.equals("float") ? (float)d: d 无效,因为条件运算符只有一个结果类型,如果一个参数的类型为 float 并且other 的类型为 double

因此,第一个替代方案将从 float 扩大到 double,同时从 double 转换为 float返回到 double 可能会对值产生影响,在任何一种情况下都会调用 String.valueOf(double) 。

您可以使用 ( precision.equals("float") ? String.valueOf((float)d): String.valueOf(d)) 代替,其方法调用不是多余的,如下所示它们是不同方法的调用,String.valueOf(float)String.valueOf(double)

也就是说,您不应该使用缩小到 float 来控制输出。检查Format Float to n decimal places寻找对格式化输出提供更多控制的替代方案。

关于java - 连接字符串时从 Double 转换为 Float 时的精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44682814/

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