如何将float作为返回类型和数据类型的java文件转换为double

如何将float作为返回类型和数据类型的java文件转换为double,java,Java,我有浮点计算,这意味着我的方法中返回的浮点值或变量在java中是浮点类型的,但当我给出双类型的输入时。。。方法中的所有计算意味着返回类型和变量必须转换为double,这是怎么可能的?。。但我必须对浮点和双输入使用相同的类 这是我的方法 public float round_a_Scale(int m, float minValue, float maxValue) { if (m == 0) m = 10; float span = maxVa

我有浮点计算,这意味着我的方法中返回的浮点值或变量在java中是浮点类型的,但当我给出双类型的输入时。。。方法中的所有计算意味着返回类型和变量必须转换为double,这是怎么可能的?。。但我必须对浮点和双输入使用相同的类

这是我的方法

public float round_a_Scale(int m, float minValue, float maxValue) {         
    if (m == 0)
        m = 10;

    float span = maxValue - minValue;
    float step = (float) Math.pow(10, Math.floor(Math.log(span / m) / 2.302585092994046)); 
    float err = m   / span * step;

    // Filter ticks to get closer to the desired count.
    if (err <= .15)
        step *= 10;
    else if (err <= .35)
        step *= 5;
    else if (err <= .75)
        step *= 2;

    return step;
}

在这种情况下,我的minvalue和maxValue是float类型的,如果我发送双精度值,那么我的方法的所有变量span、step和return类型都必须更改为double类型。如何可能

例如,您有一种方法,可以将双重结果转换为float

但请记住,您将失去精度

float doit(double d) {
    return (float)3.4f * d;
}

当您将方法签名更改为使用double而不是float时,还可以通过将浮点值转换为double来传递浮点值

这样做是因为double是float的两倍,所以使用double将确保不会出现任何溢出异常

以下是伪代码,未经测试

使用double:

public double compute(double value) {
    return value * (double)2;
}

double result = compute(45.5d);
使用浮点:

public float compute(float value) {
    return value * (float)2;
}

double value1 = Float.MAX_VALUE;
double value2 = Float.MAX_VALUE + 1;
float resul = 0f;

// Will be called
if (value1 <= Float.MAX_VALUE) {
    result = compute((float)value1);
}

// Will not be called
if (value2 <= Float.MAX_VALUE) {
    result = compute((float)value2);
}
在这里,你们使用双精度的方法,也将使用浮点

public double round_a_Scale(int m, double minValue, double maxValue) {
    if (m == 0)
        m = 10;

    double span = maxValue - minValue;
    double step = (double) Math.pow(10, Math.floor(Math.log(span / m) / 2.302585092994046d)); 
    double err = m  / span * step;

    // Filter ticks to get closer to the desired count.
    if (err <= .15)
        step *= 10;
    else if (err <= .35)
        step *= 5;
    else if (err <= .75)
        step *= 2;

    return step;
}

或者保持原样,如果不超过Float.MAX_值,则检查输入双精度值。

如果使用原语,则在文字值后附加f或f,例如3.14f。我认为这是表示浮点值。但这不是我的要求为什么不直接使用double并忘掉它呢?但是我想同时使用float和double输入,但是如果我发送小于等于int的小范围值,那么内存将被浪费,但是当你传入一个超过float范围的double值时,它将崩溃并使其无用。当您想要处理双值时,您必须使用它们。否则,请检查double value是否在浮点范围内,并仅将此值传递给函数。将代码放入问题中!并正确格式化它!我不会在评论中读到它。我只给你发了一个方法,但我有10多个这样的方法,那么我该怎么办,这没用,我们已经向你展示了所有的可能性。做一个决定:如果你的值可以超过Float.MAX_值移动到double,如果不能保持Float并将你的double值转换为Float。我不会再在这里回应了,因为我已经被投票否决了。