gpt4 book ai didi

java - 通过整个项目将 float 替换为 double

转载 作者:行者123 更新时间:2023-12-04 14:20:47 26 4
gpt4 key购买 nike

我有一个遗留项目,它有使用像这样的 float 和 long 变量的数学:

long i = initWihtVeryBigNumber();
float multiplier = 1.3f;
i *= multiplier;

这基本上会由于 float 大小而导致舍入错误,必须将其替换为:

i = (long)( i* (double)multiplier );

或乘数本身应该是 double 而不是 float 。

所以问题是,如果我将整个项目的 float 更改为 double,这是否会导致任何不可预测的行为?如果可以,您能否提供任何可能产生问题的示例?

最佳答案

So the question if I change through entire project float to double could this cause any unpredictable behavior or not ? If so can you provide any example that can produce a problem ?

是的。改变 (float)(double)每当该方法需要 float 时,都可能导致问题.例如,

Float.toString((double) 1.0f);

是编译错误。

编辑

I'm interested in run-time errors rather then in compilation errors.

好的。您有一个返回 List<Float> 的第三方库(所以下面的testIt()来自第三方)。如果你盲目地转换来自 List 的元素至 Float你会得到一个运行时错误。

public static List<Float> testIt() {
List<Float> al = new ArrayList<Float>();
al.add(1.0f);
return al;
}

public static void main(String[] args) {
List<?> al = testIt();
for (int i = 0; i < al.size(); i++) {
Object o = al.get(i);
Double v = (Double) o;
System.out.println(v);
}
}

关于java - 通过整个项目将 float 替换为 double,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25531406/

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